在R中的条形图上绘制多列
在R中的条形图上绘制多列,r,ggplot2,R,Ggplot2,是否有任何方法可以将平均盗窃率和平均盗窃率绘制在同一条形图上作为单独的条形图?我们可以直接在colMeans输出上应用条形图 barplot(colMeans(df1[1:2], na.rm = TRUE)) 或者使用tidyverse,我们通过summary/cross获得所需列的平均值,通过pivot\u longer将其重塑为“long”格式,并通过ggplot获得绘图 library(dplyr) library(tidyr) df1 %>% summarise(acr
是否有任何方法可以将平均盗窃率和平均盗窃率绘制在同一条形图上作为单独的条形图?我们可以直接在
colMeans
输出上应用条形图
barplot(colMeans(df1[1:2], na.rm = TRUE))
或者使用tidyverse
,我们通过summary/cross
获得所需列的平均值
,通过pivot\u longer
将其重塑为“long”格式,并通过ggplot
获得绘图
library(dplyr)
library(tidyr)
df1 %>%
summarise(across(1:2, mean, na.rm = TRUE)) %>%
pivot_longer(everything()) %%>%
ggplot(aes(x = name, y = value)) +
geom_col()
很明显,你在这两个变量中的尺度是非常不同的。因此,您可以尝试使用刻面方法,以查看横轴的大小,否则您将看到两个极端元素。代码将意味着使用summary_all()
使用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'))
输出:
请使用dput
添加数据,而不是图像。阅读并了解如何给出建议。
#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'))