【问题标题】:How to plot multiple histograms for two factors如何为两个因素绘制多个直方图
【发布时间】:2019-07-11 16:39:33
【问题描述】:

我有一个这样的data.frame(简化了,实际上每个参数有更多的值):

   params        value status
1    par1 9.214378e-01   good
...
5    par1 3.907796e+03   good
6    par1 1.440000e-01   bad
...
13   par1 5.343397e+01   bad
14   par2 3.430469e-03   good
...
18   par2 5.722368e-01   good
19   par2 3.764936e-03   bad
...
26   par2 1.291550e-01   bad
27   par3 4.750810e-01   good

具有 20 个参数的值,每个“好”/“坏”两个因素。 我想将其绘制为一组表格形式的图表,在其中我可以看到“好”与“坏”的差异,每个参数有两个重叠的直方图。 每个参数都存在于其特征区间内。

我已经尝试过 ggplot

p1 <- ggplot(data = DF) +
  geom_histogram(aes(x=value, color=status)) +
  facet_wrap(~params)

但这不起作用 - 条形图一个接一个地堆叠在一起

【问题讨论】:

    标签: r dataframe histogram


    【解决方案1】:

    使用position = 'dodge',否则条将被堆叠。

    我猜你正在寻找:

    ggplot(data = data, aes(x=value, fill=status)) +
               geom_histogram(position = 'dodge') +
               facet_wrap(~params)
    

    请让您的问题更具体,即不是 2 个因素,而是一个具有 2 个级别的因素。

    【讨论】:

    • 我的解决方案也能正常工作,并且不会产生相互堆叠的条形图。看起来像条相互堆叠的东西实际上是同一位置的两个条。但是,如果您像我一样有大约 1000 个值,您的解决方案会生成更精细的直方图条,从而提高绘图的可读性。
    • 另一方面,缺少 scales = "free" 会使 x 轴在所有直方图上具有相同的最小值/最大值。你当然是正确的因素/水平,谢谢!
    【解决方案2】:

    我想我找到了解决方案,其中scales = "free" 丢失了

    p1 <- ggplot(data = DF) +
      geom_histogram(aes(x=value, fill=as.factor(status))) +
      facet_wrap(~params,scales = "free")
    

    现在的图看起来只有 10 个参数,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 2018-03-08
      • 2023-02-07
      • 1970-01-01
      • 2015-01-10
      • 2017-02-24
      相关资源
      最近更新 更多