2017-07-17 18 views
0

我有一行代码,我正在运行一些数据来制作MDS图。让我们用数据第一次启动:为什么这两个ggplots,以相同的方式生成,命令传说不同?我如何控制它?

Data for MDS 1

Data for MDS 2

我创建使用此行代码MDS图:

ggplot(mds, aes(X1,X2,color=Virus_Treatment,shape=Infection)) + geom_point(size=3) + ggtitle("MDS Plot") + theme(plot.title = element_text(lineheight=.8, face="bold")) 

当我绘制数据MDS 1,它看起来像这样:MDS plot 1

但是,当我绘制MDS 2的数据时,它看起来像这样:enter image description here

第一个问题:为什么感染图例顶部为MDS 1,底部为MDS 2?我在字面上运行相同的代码,为什么图例会改变它的行为?我想要这些情节之间的一致性。有什么方法可以指定如何订购传说?

第二期:我希望颜色与Virus_Treatment部分保持一致。在MDS 2中,数据类型比MDS 1多1种,因此会丢失颜色一致性。有没有办法为MDS 2重新排序数据,以便新的颜色位于列表的末尾,或者手动设置静态颜色集?即使使用的颜色数量不同,我也需要保持图形中的颜色相同。

在此先感谢您的任何见解!

+1

颜色图例根据因子的级别确定。在两个数据集的'Virus_Treatment'上使用'factor()',并按照您想要的顺序将'levels'指定为唯一值的完整列表。 – Gregor

+1

您可以通过'scale_color_manual'设置颜色;请参阅,例如[这里](https://stackoverflow.com/questions/19068432/ggplot2-how-to-use-same-colors-in-different-plots-for-same-factor)。我记得传奇的顺序可以[秘密和不可预知的](https://stackoverflow.com/a/11397958/2461552);请参阅'guide_legend'的“order”参数来控制订单。 – aosmith

回答

0

感谢Gregor和aosmith的回答。这是我为解决这些问题所做的工作:

Virus_Treatments <- factor(mds$Virus_Treatment, 
    levels = c("ACali09_contact", "AChkShng113_principal", 
       "AShng113_principal", "mock_mock", "ACali09_principal")) 

color_set = c("#F8766D", "#7CAE00", "#00BFC4", "#C77CFF", "#FF61C3") 

ggplot(mds, aes(X1,X2,color=Virus_Treatments,shape=Infection)) + geom_point(size=3) + ggtitle("MDS Plot") + theme(plot.title = element_text(lineheight=.8, face="bold")) + guides(colour = guide_legend(order = 2), shape = guide_legend(order = 1)) + scale_colour_manual(values=color_set) 
相关问题