我有一个玩具数据表。
library(data.table)
library(ggplot2)
set.seed(45L)
DT <- data.table(V1=c(1L,2L),
V2=LETTERS[1:3],
Value=c(1,3,5,3,2,4,6,7,7,5,4,2),
V4=c(1,1,2,2,3,3,4,4,5,5,6,6))
和ggplot代码
ggplot(DT, aes(x=factor(V4), y=V3, fill= factor(V1)))+
geom_bar(stat = "identity", position=position_dodge())+
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.line.x = element_line(),
axis.line.y = element_line(),
panel.background = element_blank())
这导致以下情节
我想用V1因子1的值重新排序x轴。因此,得到的顺序是5,4,2,6,3,1。
非常感谢任何帮助!
答案 0 :(得分:3)
您的排序取决于其他两个变量,因此您可以使用forcats::fct_reorder2()
:
library(forcats)
ggplot(DT, aes(x=fct_reorder2(factor(V4), V1, Value, function(x, y) {sum(y[x == 1])}),
y=Value, fill= factor(V1)))+
geom_bar(stat = "identity", position=position_dodge())+
labs(x = "V4") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.line.x = element_line(),
axis.line.y = element_line(),
panel.background = element_blank())
答案 1 :(得分:0)
我通常在调用ggplot之前在管道中执行此类数据准备。所以:
{{1}}