gpt4 book ai didi

r - 将 vline 添加到现有绘图中并使其出现在 ggplot2 图例中?

转载 作者:行者123 更新时间:2023-12-03 02:38:46 27 4
gpt4 key购买 nike

我有一些数据用来绘制直方图。我还有两组具有一定意义的阈值。

我能够使用适当的样式绘制直方图和 vlines。但是,我无法让我的 vlines 显示在图例中。我相信这样的东西应该可以工作,但是图例项目永远不会显示。

df <- data.frame(val=rnorm(300, 75, 10))

cuts1 <- c(43, 70, 90)
cuts2 <- c(46, 79, 86)

ggplot(data=df, aes(x=val)) +
geom_histogram() +
geom_vline(xintercept=cuts1,
linetype=1,
color="red",
labels="Thresholds A",
show_guide=TRUE) +
geom_vline(xintercept=cuts2,
linetype=2,
color="green",
labels="Thresholds B",
show_guide=TRUE)

或者,如果我为我的剪辑构建一个 data.frame 并进行美学映射,我可以让我的 vlines 显示在图例中。不幸的是,图例给了我两个不同线型相互叠加的实例:

cuts1 <- data.frame(Thresholds="Thresholds A", vals=c(43, 70, 90))
cuts2 <- data.frame(Thresholds="Thresholds B", vals=cuts2 <- c(46, 79, 86))

ggplot(data=df, aes(x=val)) +
geom_histogram() +
geom_vline(data=cuts1, aes(xintercept=vals, shape=Thresholds),
linetype=1,
color="red",
labels="Thresholds A",
show_guide=TRUE) +
geom_vline(data=cuts2, aes(xintercept=vals, shape=Thresholds),
linetype=2,
color="green",
labels="Thresholds B",
show_guide=TRUE)

enter image description here

所以,最后,我正在寻找的是手动将两组线添加到绘图中的最直接方法,然后让它们正确显示在图例中。

最佳答案

诀窍是将阈值数据全部放在同一个数据框中,然后映射美学,而不是设置它们:

cuts <- rbind(cuts1,cuts2)

ggplot(data=df, aes(x=val)) +
geom_histogram() +
geom_vline(data=cuts,
aes(xintercept=vals,
linetype=Thresholds,
colour = Thresholds),
show_guide = TRUE)

enter image description here

关于r - 将 vline 添加到现有绘图中并使其出现在 ggplot2 图例中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com