r - 具有多个值的 df 的两个单独条形的条形图
问题描述
以下问题:我有这个数据集
df
Ch V1 V2
A a1 a2
B b1 b2
C c1 c2
....
而 V1 和 V2 是数值。我想为每个 V1 和 V2 值创建一个带有条形图的条形图。我试过的代码
ggplot(data = df %>% gather(Variable, No., -Ch),
aes(x = reorder(ID,-No.), y = No., fill = Variable)) +
geom_bar(stat = 'identity', position= position_dodge())+
geom_col()+
xlab("Section of industry")+
ylab("No. of occurences")+
theme_classic()+
theme(axis.text.x = element_text(angle = 45, size=1),
plot.title = element_text(hjust = 0.5),
legend.position = "top")+
ggtitle("XXX")
即使使用 position= position_dodge() 它也只会像这样将两个条合并为一个: 知道如何将它们分开或为什么 positon_dodge() 不起作用?我想是因为我以前使用过收集功能?
另一个问题是,Ch 的值太大,所以如果我想以可读的方式显示它们,图形就会“消失”。有没有办法显示这些值(可能将值写成两行)以便显示?
非常感谢!
解决方案
您的问题是您在通话中同时拥有geom_bar
和,因此geom_bar 中的参数通过产生堆叠条而被超越。因此,删除应该有效。或者,您可以删除并传递给.geom_col
ggplot
position_dodge()
geom_col
geom_col
geom_bar
position = position_dodge()
geom_col
要缩写您的 x 标签,您可以使用scale_x_discrete(abbreviate)
本文中提到的方法:如何在 ggplot 中缩短 x 轴标签文本?
library(dplyr)
library(ggplot2)
library(tidyr)
df %>% pivot_longer(.,-Ch, names_to = "Var", values_to = "Val") %>%
ggplot(aes(x = Ch, y = Val, fill = Var))+
geom_col(position = position_dodge())+
xlab("Section of industry")+
ylab("No. of occurences")+
theme_classic()+
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5),
legend.position = "top")+
ggtitle("XXX")+
scale_x_discrete(label = abbreviate)
示例数据
structure(list(Ch = structure(1:5, .Label = c("AAAAAAAAAAAAAA",
"BBBBBBBBBBBB", "CCCCCCCCCCCCCCCC", "DDDDDDDDDDDDDD", "EEEEEEEEEEEEE"
), class = "factor"), V1 = 1:5, V2 = 5:9), class = "data.frame", row.names = c(NA,
-5L))
推荐阅读
- javascript - 如何在js中修剪html内容?
- r - 从列中提取数据以在 R 中创建另一列
- jquery - jquery 滑块花式框显示悬停箭头。但是我网站上的副本在悬停时缺少箭头
- openshift - glusterfs 和 glusterfs_registry 可以共享相同的节点/设备
- c# - 导出/导入 png 文件 Android Unity
- react-native - 调用函数作为组件 React-Native
- r - ggplot 使用黄土日期 - 将轴标签从数字更改为字符
- python - Python:使用带有 TF-IDF 的列表
- r - 安装 dartR 时出现问题,并且包“稍后”不可用(对于 R 版本 3.5.1)
- mysql - Hibernate 不创建连接表