如何根据我指定的变量在ggplot中对点进行排序

时间:2015-02-07 21:13:07

标签: r ggplot2

我有比例与名字的情节。我试图通过比例订购ggplot但是即使我订购了数据框,该图也希望根据x轴值按字母顺序排序。如何按y轴值排序

resultOrder <- result[order(result$Proportion), ]

ggplot() + 
geom_point(aes(resultOrder$Names, resultOrder$Proportion), resultOrder) +  
geom_point(shape=1) +
labs(title="Number of SVs each repeat element is found in (as a percentage,     filtered for >20%)", x="TY [°C]", y="Txxx") +
#geom_point(aes(mergedGroup4$Rptname, mergedGroup4$PercentageChangeForWholeSV),mergedGroup4) + theme(axis.text.x=element_text(angle=-90)) + 
xlab("Repetitive elements") + 
ylab("Percentage of SVs") +
theme(axis.text.x=element_text(angle=-90)) +
theme(legend.position="top")

示例数据

                          Names Values Proportion
 FLAM_C                   FLAM_C   1112   20.03965
 MER112                   MER112   1115   20.09371
 L1MA10                   L1MA10   1116   20.11173
 L1PB3                     L1PB3   1121   20.20184
 LTR78B                   LTR78B   1125   20.27392
 MLT1H1                   MLT1H1   1126   20.29194
 (TG)n                     (TG)n   1127   20.30997
 Charlie7               Charlie7   1129   20.34601
 MamRep605             MamRep605   1133   20.41809
 LTR16A                   LTR16A   1136   20.47216
 Charlie1b             Charlie1b   1139   20.52622
 L1PA6                     L1PA6   1142   20.58028
 MLT1G1                   MLT1G1   1148   20.68841
 LTR67B                   LTR67B   1150   20.72445
 MER58A                   MER58A   1162   20.94071

2 个答案:

答案 0 :(得分:1)

您需要根据Names订单设置Proportion因素,以便ggplot不对它们重新排序。所以试试这个:

df$Names = factor(df$Names, levels=df[order(df$Proportion), "Names"])

ggplot(df, aes(Names, Proportion)) + geom_point(shape=1)

enter image description here

我还重写了ggplot的第一行,因为你使用的方式非常复杂,可以用更简单的方式完成。

答案 1 :(得分:1)

DMC是正确的。

试试这个,因为我简化了你的ggplot调用。对我而言,诀窍是将均值参数添加到reorder

df <- read.table(file = "clipboard") 

ggplot(df) + 
  geom_point(aes(reorder(Names, Proportion, mean), y=Proportion)) +
  coord_flip()

enter image description here