假设我有一个包含3列的数据框:
n value1 value2
1 2 8
2 4 6
3 6 4
4 8 2
我想按以下方式绘制它们。对于每n个,在值y的正y刻度和值2的反向y刻度上制作一个小节:
这应该是方面兼容的(因为实际上还有2列)。
这是我到目前为止所管理的
p = data %>%
ggplot() +
geom_bar(aes(x = as.factor(n), y = value1),stat="identity",position="dodge") +
geom_bar(aes(x = as.factor(n), y = value2),stat="identity",position="dodge") + scale_y_reverse() +
facet_grid(A ~ B) +
ylab("value 1/2") +
xlab("number")
show(p)
答案 0 :(得分:1)
这有效:
library(ggplot2)
ggplot(data, aes(x = factor(n))) +
geom_col(aes(y = value1, fill = "Value 1")) +
geom_col(aes(y = -value2, fill = "Value 2")) +
ylab("value 1/2") +
xlab("number")
答案 1 :(得分:0)
您无法在ggplot2中的次要y轴上绘制值的子集,因为它为误导的可视化打开了闸门。 ggplot2中的辅助y轴选项可让您有条件地显示辅助y轴,该条件是对主要的线性变换。
但是,您的情况很简单:向下的条形就是您的value2乘以-1:
df %>% mutate(value2=value2*-1) %>% gather(stat, val, value1, value2) %>% ggplot(aes(x=as.factor(n), y=val, fill=stat)) + geom_col()