缺少组的配对条形图会导致轴标签不正确

时间:2018-06-26 01:22:56

标签: r ggplot2

我这里有一个复杂的问题。我正在尝试按位置创建匿名,每月比较或账单价格。目标是创建一个这样的图,该图提供匿名可视化,可以在提供程序之间分发。问题在于,在下图中,Corbin的数据实际上是从底部开始的第三组。使用相同的数据,我可以生成具有所有名称的正确图形。 enter image description here

如果我只考虑一个月,但是下面的代码可以完美地创建图形,但是如果我考虑一个多月,则标签不再与正确的组相对应。

AdjustedData[order("Reconciled.Month", "Location", "Provider"),]
AdjustedData$Provider %>% 
  walk(~{
    filtered2_AdjustedData <- AdjustedData %>% 
      filter(Location == Location[Provider == .x]) 

    labels2 <- array(data = '',dim = nrow(filtered2_AdjustedData))
    labels2[filtered2_AdjustedData$Provider == as.character(.x)] <- as.character(.x)

h <- filtered2_AdjustedData %>% 
      ggplot(aes(Provider, Per.Visit.Bill.Rate, fill = Reconciled.Month), show.legend = TRUE) +
  geom_bar(stat = "identity", position =  position_dodge(width = .9), na.rm = TRUE)  +
  ggtitle("Per Visit Bill Rate- 2018", filtered2_AdjustedData$Location)+
  theme_light()+
  theme(plot.title = element_text(size = 22, hjust = .5, family = "serif"))+
  theme(plot.subtitle = element_text(size = 18, hjust = .5, family = "serif"))+
  theme(axis.text.x=element_text(angle= 0, vjust=1, hjust = .5))+
  labs(caption = "Data sourced from Provider Compensation Analysis and \nMonthly Summary of Billed Physician Encounters Reports,2018. \nRates have been adjusted to exclude the deduction per visit for malpractice insurance where applicable.")+ 
  theme(plot.caption = element_text(size= 8, hjust = .5))+ 
  scale_x_discrete(labels = labels2)+
  geom_text(aes(x=Provider, y= Per.Visit.Bill.Rate,label=sprintf("$%.2f",Per.Visit.Bill.Rate)), position = position_dodge(.8), hjust= 0, vjust= .5, angle = 0, size = 3)+
  scale_fill_manual(values=c("darkolivegreen3","dodgerblue3", "goldenrod2", "firebrick")) + 
  scale_y_continuous(name = "Per Visit Bill Rate ($)", limits = c(0,100),breaks =seq(0,100,10), labels = dollar)+coord_flip()+
  guides(fill=guide_legend(title = "Month", reverse = FALSE))

 print(h)})

此代码还可以将图形复制x次,持续x个月。例如,如果我正在考虑1月至4月,则会得到4张图表。此外,一些提供程序直到年中的一部分才被雇用,因此Jan可能会空着。这是由于该代码创建了一个名称向量,该名称向量在映射到绘图时会不匹配。我已经尝试了na.rm和na.omit的每种组合,并且确保在没有使用提供者的每种情况下,提供者都有一个空白条目,以便条正确显示但没有运气。我知道问题所在,但找不到解决方案。我愿意完全改变自己的方法。

数据:

Provider    Reconciled Month    Per Visit Bill Rate Location
Alex    1       AZ
Daniels 1   29.08   AZ
Edwin   1   31.39   AZ
Goldberg    1   30  UT
Brown   1   25.74   UT
Bowman  1   33.54   UT
Davis   1   31.5    CA
Fenner  1       CA
Gordon  1   39.36   CA
Alex    2       AZ
Daniels 2   33.23   AZ
Edwin   2   36.63   AZ
Goldberg    2   45.22   UT
Brown   2   72.98   UT
Bowman  2   40.01   UT
Reed    2   31.67   CA
Simmonds    2   50.82   CA
Villasenor  2   27.02   CA
Alex    3   30.63   AZ
Daniels 3   40.71   AZ
Edwin   3   23.21   AZ
Goldberg    3   27.56   UT
Brown   3   33.09   UT
Bowman  3   37.26   UT
Davis   3   45.71   CA
Fenner  3   32.62   CA
Gordon  3   32.28   CA
Alex    4   49.74   AZ
Daniels 4   74.6    AZ
Edwin   4   45.83   AZ
Goldberg    4   31.67   UT
Brown   4   52.23   UT
Bowman  4   65.21   UT
Reed    4   14.25   CA
Simmonds    4   45.36   CA
Villasenor  4   36.45   CA

1 个答案:

答案 0 :(得分:0)

虽然我确定这不是实现此目标的最有效方法,但关键是要确保两件事: 1)确保在每个月都填写了所有提供者的姓名,月份和位置字段,但是即使账单信息缺席了一个月,账单信息也为空。 2)确保提供者按位置分组,然后按月份分组。此后,提供者必须每月使用相同的顺序,因为此方法只是创建名称向量并将其应用于轴。如果以其他方式列出了提供者,则标签将不正确。

这不能解决重复问题,但至少现在标签是正确的。

一个额外的好处:删除

 filtered2_AdjustedData <- AdjustedData %>% 
  filter(Location == Location[Provider == .x])

,然后将适当的引用更改为filtered2 _ ..,将导致整个公司的身份图总体消失。