我正在使用具有离散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是我的治疗条件顺序.然而,它不能很好地工作,并给我缺少热箱.
我正在尝试更改图例项目的显示顺序.我花了大约一个小时在这里,没有结果.
这是一个示例设置:
library(ggplot2)
set.seed(0)
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10'))
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的众多事情之一:
ggplot(d, aes(x = x, y = y)) +
geom_point(size=7, aes(color = a, order = as.numeric(a)))
Run Code Online (Sandbox Code Playgroud)
(当然,我天真的希望是传奇项目将以数字顺序显示:1,3,10.)