如何使用ggplot2在直方图上添加多个vlan

Posted

技术标签:

【中文标题】如何使用ggplot2在直方图上添加多个vlan【英文标题】:how to add multiple vline on an histogram using ggplot2 【发布时间】:2019-06-06 11:25:20 【问题描述】:

我绘制了一个直方图显示Histogram 我想在分配不平衡的概率总和为 50%、80% 和 90% 时添加垂直线。

我已经构建了直方图,但无法添加上述垂直线。

pl <- ggplot() + 
        geom_line(data = data.frame(power1, abs(t-c)), aes(x = abs(t-c), y = power1, color = "power"), size = 1) + 
        scale_y_continuous(labels = percent_format(), sec.axis = sec_axis(~.*.3, labels = percent_format(), name = "Probability of allocation imbalance")) + 
        geom_point(data = data.frame(power1, abs(t-c)), aes(x = abs(t-c), y = power1)) + 
        geom_histogram(data = Simple_Rand_simulation, aes(x = Imbalance_all, y = ..density..*3), color = "blue",
                 binwidth = density(Simple_Rand_simulation$Imbalance_all)$bw) + 
        labs(y = "Probability of power", x = "Allocation imbalance", colour = "Parameter") + 
        theme(legend.position = c(0.8, 0.9))

pl

当分配不平衡的概率总和为 50%、80% 和 90% 时,我期望垂直线

【问题讨论】:

请阅读How to make a great R reproducible example 【参考方案1】:

您可能只需要使用geom_vline()。如果您在 0.5、0.8 和 0.9 处需要它们,则为:

pl + 
  geom_vline(xintercept = .5) + 
  geom_vline(xintercept = .8) + 
  geom_vline(xintercept = .9)

当然你可以根据累积概率的计算对这些值进行编码。

【讨论】:

以上是关于如何使用ggplot2在直方图上添加多个vlan的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2 堆叠直方图 - 转换为密度图

数据故事使用ggplot2进行数据可视化

使用 ggplot2 沿平滑曲线绘制直方图或密度

R语言ggplot2可视化:ggplot2可视化直方图(histogram)并在直方图的顶部外侧(top upper)或者直方图内部添加数值标签

R语言ggplot2可视化:可视化堆叠的直方图在bin中的每个分组部分添加数值标签使用position_stack函数设置

R语言使用ggplot2包使用geom_density()函数绘制分组密度图(添加直方图分组颜色配置)实战(density plot)