我只是试图用R / GGPLOT2创建可视化 . 我试图实现的图表是一个浮动条形图(一个条形图从一个最小值到最大值) . 但是,重叠在此之上我想要一个在辅助轴上的趋势线 . 到目前为止,这是我的尝试:
# first, your data
table1 <- read.table(text = 'X A B C D E F G H I J K L
1 "BAR TOP" 31.5 31.8 30.3 28.0 24.9 24.4 21.7 20.9 24.5 25.4 26.0 28.7
2 "TREND VALUE" 1000 1345 1234 1456 1324 1765 1567 1345 1556 1334 1224 1556
3 "BAR BOTTOM" 4.0 5.6 4.1 -1.3 0.0 -3.1 -2.6 -1.4 -0.8 2.0 2.7 4.1', header =T)
library(reshape2)
library(ggplot2)
# reshape to wide format (basically transposing the data.frame)
w <- dcast(melt(table1), variable~X)
p<-ggplot(w, aes(x=variable,ymin = `BAR BOTTOM`,
ymax = `BAR TOP`, lower = `BAR BOTTOM`,
upper = `BAR TOP`, middle = `BAR BOTTOM`)) +
geom_boxplot(stat = 'identity')
p <- p + labs(y = "BAR RANGE",
x = "VARIABLE",
colour = "Parameter")
p <- p + theme(legend.position = c(0.8, 0.9))
p
这是我想要它们的条形码,但是我在使用TREND VALUE值作为辅助轴上的趋势线时遇到了麻烦 . 有什么建议或指示吗?
2 回答
我建议手动将
TREND VALUE
转换为所需范围,并指定具有相同转换的sec.axis
. 我也将使用geom_rect()
而不是geom_boxplot()
:结果情节:
编辑
回答评论:我们几乎可以指定任何转换:
将
x
值转换为范围,mn
- 新的最小值,mx
- 新的最大值:回归:
现在使用
mx = 0
和mn = 30
(倒转BAR轴的最小值和最大值)和scale_y_reverse()
这个函数,我们将得到反转的主轴和正常的副轴:您可以尝试使用geom_smooth添加黄土平滑线 . 为了使它在同一轴上,只需重新调整它 .
这不会产生不同的轴,但除以100使其易于解释 .
See example