我正在使用具有离散x刻度的ggplot制作一个躲闪条形图,x轴现在按字母顺序排列,但我需要重新排列它以便按y轴的值排序(即,最高的条形将位于左侧).
我尝试了排序或排序,但结果是对x轴进行排序,而不是分别对条形进行排序.
我做错了什么?
我想一个使heatmap使用ggplot2使用geom_tiles此功能,下面是我的代码:
p<-ggplot(data,aes(Treatment,organisms))+geom_tile(aes(fill=S))+
scale_fill_gradient(low = "black",high = "red") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
theme(legend.position = "right",
axis.ticks = element_blank(),
axis.text.x = element_text(size = base_size, angle = 90, hjust = 0, colour = "black"),
axis.text.y = element_text(size = base_size, hjust = 1, colour = "black")).
Run Code Online (Sandbox Code Playgroud)
数据是我的data.csv文件
我的X轴是治疗的类型
我的Y轴是有机体的类型
我对命令和编程不太熟悉,而且我对此比较陌生.我只是想能够指定x轴上标签的顺序.在这种情况下,我试图指定"治疗"的顺序.默认情况下,它按字母顺序排序.如何覆盖此数据/保持数据的顺序与原始csv文件中的顺序相同?
我试过这个命令
scale_x_discrete(limits=c("Y","X","Z"))
Run Code Online (Sandbox Code Playgroud)
其中x,y和z是我的治疗条件顺序.然而,它不能很好地工作,并给我缺少热箱.
我有一个data.frame,从最高到最低排序.例如:
x <- structure(list(variable = structure(c(10L, 6L, 3L, 4L, 2L, 8L,
9L, 5L, 1L, 7L), .Label = c("a", "b", "c", "d", "e", "f", "g",
"h", "i", "j"), class = c("ordered", "factor")), value = c(0.990683229813665,
0.975155279503106, 0.928571428571429, 0.807453416149068, 0.717391304347826,
0.388198757763975, 0.357142857142857, 0.201863354037267, 0.173913043478261,
0.0496894409937888)), .Names = c("variable", "value"), row.names = c(10L,
6L, 3L, 4L, 2L, 8L, 9L, 5L, 1L, 7L), class = "data.frame")
ggplot(x, aes(x=variable,y=value)) + geom_bar(stat="identity") +
scale_y_continuous("",label=scales::percent) + coord_flip()
Run Code Online (Sandbox Code Playgroud)
现在,数据很好并且排序,但是当我绘制时,它按因子排序.这很烦人,我该如何解决?
当我使用geom_tile()与ggplot2和离散缩放标签在x轴按升序排列,在y轴降序排列:
#some sample data
a <- runif(400)
a <- matrix(a, ncol=20)
colnames(a) <- letters[seq( from = 1, to = 20 )]
rownames(a) <- letters[seq( from = 1, to = 20 )]
a <- melt(a)
Run Code Online (Sandbox Code Playgroud)
当我绘制数据帧时,a这就出现了:
ggplot(a, aes(X1, X2, fill = value)) + geom_tile() +
scale_fill_gradient(low = "white", high = "black", breaks=seq(from=0, to=1, by=.1), name="value") +
opts(axis.text.x=theme_text(angle=-90, hjust=0)) +
scale_x_discrete(name="") + scale_y_discrete(name="")
Run Code Online (Sandbox Code Playgroud)
并且对于x和y标记的coords不同:

我想让标签从上到下,从左到右排序.有一个快速的方法来做到这一点?