【问题标题】:ggplot- Bar chart with multiple variablesggplot- 具有多个变量的条形图
【发布时间】:2020-01-08 21:05:42
【问题描述】:

我正在创建一个包含三个变量(pH、温度和溶解氧)的条形图。我希望它们按日期分组,我很难让图表成为具有正确比例的单独条形。目前我的图表到处都是。这是我到目前为止所拥有的:

dat.g <- gather(Plaster_2019_Data, type, value, -Date)
ggplot(dat.g, aes(Date, value)) + 
  geom_bar(aes(fill =Date), stat = 'identity', position = "dodge2") 

我希望这些条形与 pH、温度和溶解氧相对应,并且 y 轴在 1-30 之间的一个范围内。任何帮助将不胜感激!

数据:

Date       Surface  pH     Temperature
May        12.08    8.56    11.16
May        11.68    8.90    8.76
June        8.69    9.07    14.65
June        2.26    7.49    17.51
July        4.54    7.77    23.82
July        2.13    8.17    25.29
August      6.34    8.62    26.50
September   9.33    9.03    24.31
September   10.98   8.58    21.02
September   9.59    8.61    17.33
October     16.07   8.70    10.39
October     9.12    8.07    6.38

【问题讨论】:

  • 顺便说一句:value 很可能不是数字。检查str(dat.g)
  • 这能回答你的问题吗? Wrong order of y axis in ggplot barplot
  • 我尝试根据此页面进行故障排除,但没有任何运气让我的 y 轴处于正确的顺序。我还将值转换为数字,但没有解决问题。我非常坚持这一点!

标签: r ggplot2


【解决方案1】:

type 列来分面你的情节怎么样?

ggplot(dat.g, aes(Date, value)) + 
  geom_bar(aes(fill = Date), stat = 'identity', position = "dodge2") +
  facet_grid(.~type) +
  expand_limits(y = c(1,30))

如果您希望条形图位于同一平面上,另一种选择是将 fill = 参数更改为 type,因为您的 x 轴已经指示月份。

ggplot(dat.g, aes(Date, value)) + 
  geom_bar(aes(fill = type), stat = 'identity', position = "dodge2") +
  expand_limits(y = c(1,30))

【讨论】:

  • 感谢您的帮助!你知道如何让 y 轴成为一个比例而不是现在的三个比例吗?例如1-30
  • 通常,facet 只有一个 y 轴。在上面的代码中,有函数expand_limits(y = c(1,30) 为每个变量设置相同的比例。或者我没有正确理解你的问题......也许你应该考虑@markus评论并检查你的value变量是否是str(dat.g)的数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多