由于没有数据,已分组的条形图列宽不均匀

时间:2018-10-30 18:44:16

标签: r

我正在尝试为数据集显示成组的条形图,但是,由于某些月份没有数据(没有收入),列宽显示为不相等,并且我希望列宽相同,无论是否一些州没有收入。注意一月份的条形图是如何分组的,尽管其他州没有收入,但整个月都进行了类似的分组(如果某些州没有收入,我希望将它们隔开)。任何帮助将不胜感激,谢谢。

library(ggplot2)
plot = ggplot(Checkouts, aes(fill=Checkouts$State, x=Checkouts$Month, y=Checkouts$Income)) + 
geom_bar(colour = "black", stat = "identity") 

My Bar Plot

Checkouts table/data

2 个答案:

答案 0 :(得分:1)

可以通过两种方式完成此操作。

  1. 如果您使用的是最新版本的ggplot2(我相信是从2.2.1起),则函数checkboxGroupInput中有一个名为preserve的参数,该参数保留垂直位置并仅调整水平位置。这是它的代码。

代码:

position_dodge
  1. 另一种方法是预先计算并为每个缺失项添加虚拟行。使用import(ggplot2) plot = ggplot(Checkouts, aes(fill=Checkouts$State, x=Checkouts$Month, y=Checkouts$Income)) + geom_bar(colour = "black", stat = "identity", position = position_dodge(preserve = 'single')) 是最好的解决方案。

答案 1 :(得分:0)

您正在寻找position_dodge2(preserve =“ single”)(https://ggplot2.tidyverse.org/reference/position_dodge.html)。

library(ggplot2)
plot = ggplot(Checkouts, aes(fill = State, x = Month, y= Income)) + 
  geom_bar(colour = "black", stat = "identity", 
           position = position_dodge2(preserve = "single")) 

此外,您无需在ggplot()中使用$指定数据框的列。例如,Checkouts $ State可以替换为State。