使用ggplot2绘制条形图出现间距不规则,需实现base R式固定间距
解决ggplot2条形图x轴间距不规则问题
你的问题出在dpi是数值型变量,ggplot2默认会把它当作连续坐标轴处理,条形位置会跟着数值的实际间隔走,所以出现了间距不均的情况。而base R的条形图会自动把数值型x轴当作离散类别绘制,所以每个条形间距均匀。
只需要把dpi转换成因子型变量,就能让ggplot2按离散类别处理,实现均匀间距的条形。下面是两种修改方式:
方式1:提前转换数据类型
library("plyr") library("ggplot2") dataTable <- count(player_data, "dpi") # 将dpi转换为因子,明确每个值是独立类别 dataTable$dpi <- factor(dataTable$dpi) ggplot(dataTable, aes(x = dpi, y = freq, fill = dpi)) + geom_bar(stat = "identity")
方式2:在绘图时直接转换
如果不想修改原始数据,可以在aes()里直接把dpi转成因子:
library("plyr") library("ggplot2") dataTable <- count(player_data, "dpi") ggplot(dataTable, aes(x = factor(dpi), y = freq, fill = factor(dpi))) + geom_bar(stat = "identity")
调整后每个dpi值都会对应独立且间距均匀的条形,和你想要的base R绘图效果一致。如果需要调整条形宽窄,可以给geom_bar()加width参数(比如width = 0.8),按需设置即可。
内容的提问来源于stack exchange,提问作者mxid
相关产品推荐
相关产品推荐

