我正在努力在R中用双y轴绘制条形图。我找到了许多相关的文章,但找不到解决方案。例如,这就是我的数据:
abc 862054 111552197
xyz 760369 163135388
def 488089 130846735
我关注了这篇文章:Bar Plot with 2 y axes and same x axis in R language,并使用highcharter软件包获取了此信息: 带有高字符的双Y轴条形图:
但是,我需要一个在两个不同侧面(一个在左边,一个在右边)上带有两个y轴的条形图。
有人可以帮我吗?在此帖子的另一答案Bar Plot with 2 y axes and same x axis in R language中,我找到了当x是数字列表但在我的情况下x是字符串而不是数字列表时的解决方案。
答案 0 :(得分:1)
尝试使用tidyverse
的{{1}}方法。双轴绘图的关键是要在绘图中显示的变量之间具有比例因子。这里的代码:
ggplot2
输出:
使用了一些数据:
library(tidyverse)
#Scaling factor
sf <- max(df$V2)/max(df$V3)
#Transform
DF_long <- df %>%
mutate(V3 = V3*sf) %>%
pivot_longer(names_to = "y_new", values_to = "val", V2:V3)
#Plot
ggplot(DF_long, aes(x=V1)) +
geom_bar( aes(y = val, fill = y_new, group = y_new),
stat="identity", position=position_dodge(),
color="black", alpha=.6) +
scale_fill_manual(values = c("blue", "red")) +
scale_y_continuous(name = "V2",labels = scales::comma,sec.axis = sec_axis(~./sf, name="V3",
labels = scales::comma))+
labs(fill='variable')+
theme_bw()+
theme(legend.position = 'top',
plot.title = element_text(color='black',face='bold',hjust=0.5),
axis.text = element_text(color='black',face='bold'),
axis.title = element_text(color='black',face='bold'),
legend.text = element_text(color='black',face='bold'),
legend.title = element_text(color='black',face='bold'))+
ggtitle('My barplot')