我在ggplot中制作了一个如下所示的条形图:
这是我的代码:
ggplot(melted, aes(x = c, y = value)) +
geom_bar(stat="identity", width = 0.3) +
geom_hline(yintercept = 33)
我的数据如下所示:
c variable value
C_2 qd 55.29899
C_4 qd 55.00241
C_8 qd 54.43281
C_16 qd 53.37958
如何对条形图进行重新排序,以便它们显示在"数字顺序" C_2,C_4,C_8,C_16?
答案 0 :(得分:2)
如果在R中有文本,通常会将其转换为因子。默认情况下,此因子按字母顺序排序:
> melted$c
[1] C_2 C_4 C_8 C_16
Levels: C_16 C_2 C_4 C_8
ggplot将在绘制图形时使用因子的顺序。您可以使用factor功能手动指定订单或级别:
melted$c <- factor(melted$c, levels=c("C_2", "C_4", "C_8", "C_16"))
在这种情况下,手动设置订单并不困难。或者,这可以使用gtools包中的mixedsort
函数自动完成:
library(gtools)
melted$c <- factor(melted$c, levels=mixedsort(as.character(melted$c)))
使用原始代码:
ggplot(melted, aes(x = c, y = value)) +
geom_bar(stat="identity", width = 0.3) +
geom_hline(yintercept = 33)
答案 1 :(得分:1)
绘图的顺序取决于您的因子水平的排列方式。默认情况下,这是按字母顺序完成的。有几种方法,但你不知道更多关于你的数据的事情:
ggplot(melted, aes(x = factor(c, levels=c("C_2", "C_4", "C_8", "C_16")), y = value)) +
geom_bar(stat="identity", width = 0.3) +
geom_hline(yintercept = 33)
答案 2 :(得分:0)
我使用以下代码
做了一个快速而肮脏的方法来解决这个问题<configuration>
<system.webServer>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>
通过在最后一个语句中对它们进行排序。不知道这是否是一个“好”的方法。任何反馈都是适当的