R ggplot单杠

时间:2019-03-15 20:06:55

标签: r ggplot2

请问我真的很难做一些简单的事情。我在这里阅读了不同的文章,但是找不到与我需要的东西相似的东西。 我有以下数据框:

sector <- c("tech", "energy", "retail", "gaming")
curr_sales <- c(10, 18, 15, 7)
avg_sales <- c(8.2, 20.1, 25.0, 4.1)
df <- data.frame(sector, curr_sales, avg_sales)
df$sector <- as.character(df$sector)

我的最初目标是创建一个带有水平条形图的图,在Y轴上为扇区,在x轴上为当前销售额curr_sales,并按当前销售额对条形进行排序。 到目前为止,以下代码有助于实现此目标:

ggplot(df, aes(x = reorder(sector, curr_sales), y = curr_sales)) + 
  geom_bar(stat = "identity") + 
  coord_flip()
目标:在这一点上,我需要一种方法来显示每个部门(=每个水平条)的平均销售价值。我希望在没有每个部门的第二个竖线的情况下实现这一目标,而是希望有一个标记或一条线可以轻松查看每个部门的平均销售额相对于当前销售额的水平。 我找不到任何类似的例子,任何建议将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

听起来您可能可以通过两个geom_bar层来做到这一点,每个层具有不同的y外观。像这样:

ggplot(df) + 
  geom_bar(stat = "identity", aes(x = reorder(sector, curr_sales), y = curr_sales), fill=sector) + 
  geom_bar(stat = "identity", aes(x = reorder(sector, curr_sales), y = avg_sales), alpha=0, color='black') + 
  coord_flip() + 
  scale_fill_manual(values=c("energy"="red", "gaming"="blue", "retail"="orange", "tech"="green"))

您可以使用第二个小节来获得想要的确切效果(在我的示例中,它是透明的,带有黑色轮廓)。这个例子也有颜色。