首页 > 解决方案 > 在R中的条形图上绘制多列

问题描述

数据

有什么方法可以将平均盗窃率和平均盗窃率绘制在同一个条形图上作为单独的条形图?

标签: rggplot2

解决方案


很明显,您在两个变量中的比例非常不同。因此,您可以尝试使用刻面方法来查看轴上的幅度,否则您将看到两个极端元素。summarise_all()该代码将暗示使用reshape计算均值,pivot_longer()然后设计绘图:

library(tidyverse)
#Data
df <- data.frame(Burglary_Rate=c(918.8,863.2,770.4,728.8,741.8,747,741,730.3),
                 larceny_rate=runif(8,6900000,7000000))
#Code
df %>% summarise_all(.funs = mean,na.rm=T) %>%
  pivot_longer(everything()) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_bar(stat = 'identity',color='black')+
  facet_wrap(.~name,scales = 'free')+
  scale_y_continuous(labels = scales::comma)+
  ggtitle('Mean values')+
  theme_bw()+
  theme(legend.position = 'top',
        plot.title = element_text(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'))

输出:

在此处输入图像描述

轴告诉你真正的大小。否则,您将拥有:

#Code 2
df %>% summarise_all(.funs = mean,na.rm=T) %>%
  pivot_longer(everything()) %>%
  ggplot(aes(x=name,y=value,fill=name))+
  geom_bar(stat = 'identity',color='black')+
  scale_y_continuous(labels = scales::comma)+
  ggtitle('Mean values')+
  theme_bw()+
  theme(legend.position = 'top',
        plot.title = element_text(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'))

输出:

在此处输入图像描述


推荐阅读