R 为什么这两个以相同方式生成的GGPlot对图例的排序不同?我怎样才能控制它?

R 为什么这两个以相同方式生成的GGPlot对图例的排序不同?我怎样才能控制它?,r,sorting,ggplot2,mds,R,Sorting,Ggplot2,Mds,我有一行代码,我正在一些数据上运行,以绘制MDS图。让我们先从数据开始: 我正在使用以下代码行创建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图。让我们先从数据开始:

我正在使用以下代码行创建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 2的数据时,它看起来是这样的:

第一个问题:为什么感染图例在MDS 1的顶部,而在MDS 2的底部?我确实在上面运行了相同的代码,为什么传说会改变它的行为?我想要这些情节之间的一致性。有没有办法指定图例的排序方式

第二个问题:我希望病毒治疗部分的颜色保持一致。在MDS 2中,数据类型比MDS 1中多1种,因此颜色一致性会受到影响。有没有办法对MDS 2的数据重新排序,使新颜色位于列表的末尾,或者手动设置静态颜色集?我需要保持图形中的颜色相同,即使使用的颜色数量不同


提前感谢您对此的任何见解

感谢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)

Virus\u处理颜色图例根据因子的级别确定。在两个数据集中使用
Virus_Treatment
上的
factor()
,并指定
级别
作为唯一值的完整列表,按您想要的顺序。您可以通过
scale_color_手册
设置颜色;参见,例如。我记得传说中的顺序可以是;有关控制顺序的信息,请参见
指南\u图例
中的“顺序”参数。