ggplot 中 hline 上的错误栏
Error bar on hline in ggolot
我有一个看起来很复杂的图,是用 ggplot2 创建的; X 轴具有每个点的名称,Y 轴具有它们的值。我用geom_point来表示这些。我还为图中的每个点添加了误差线。
现在我叠加了一个图,该图仅使用 geom_hline 和不同的线型来表示此数据中的样本(它与第一个数据框不同,但共享 X 和 Y 轴)。我想显示这些 hlines 上的偏差,我正在寻找有关如何描述 hlines 偏差的灵感。
我尝试添加误差线,但随后它们在 X 轴上显示为附加样本,这并不理想。这首先是一个可行的想法吗?
这是 hline 的样子,误差线在 X 轴上显示为额外的点。
编辑:
代码片段,如果它可以作为尝试类似事情的人的灵感
p <- ggplot(df_sample_dots, aes(x=Names, y=Values), show.legend = TRUE) + geom_point(size=5, aes(color=factor(Names))) +
geom_errorbar(aes(ymin=Values-dev, ymax=Values+dev), width=.2, position=position_dodge(.9), color="black")
p <- p + geom_hline(aes(yintercept=Values, linetype=Names), data=df_sample_hlines, show.legend = TRUE, color="black") +
geom_errorbar(aes(ymin=Values-dev, ymax=Values+dev), data = df_sample_hlines, color="thistle4", width=1, size=1)
像这样的事情怎么样:
library(ggplot2)
library(dplyr)
set.seed(12345)
toPlot <-
data.frame(
group = factor(sample(LETTERS[1:10],1000,TRUE))
) %>%
mutate(value = rnorm(1000) +
as.numeric(group)/10)
basePlot <-
ggplot(toPlot) +
stat_summary(aes(x = group
, y = value)
, fun.data = mean_cl_normal) +
theme_minimal()
basePlot
lineAdd <-
data.frame(
x = range(as.numeric(toPlot$group)) + c(-.5,.5)
, ymax = 1.2
, ymin = 0.8
)
basePlot +
geom_ribbon(
data = lineAdd
, mapping = aes(x = x
, ymax = ymax
, ymin = ymin)
, col = "light gray"
, alpha = 0.2
) +
geom_hline(yintercept = 1)
您仍然需要手动添加每一行(并为功能区生成数据),但如果您的输入数据集是一致的,您也可以将其自动化。
我有一个看起来很复杂的图,是用 ggplot2 创建的; X 轴具有每个点的名称,Y 轴具有它们的值。我用geom_point来表示这些。我还为图中的每个点添加了误差线。
现在我叠加了一个图,该图仅使用 geom_hline 和不同的线型来表示此数据中的样本(它与第一个数据框不同,但共享 X 和 Y 轴)。我想显示这些 hlines 上的偏差,我正在寻找有关如何描述 hlines 偏差的灵感。
我尝试添加误差线,但随后它们在 X 轴上显示为附加样本,这并不理想。这首先是一个可行的想法吗?
这是 hline 的样子,误差线在 X 轴上显示为额外的点。
编辑: 代码片段,如果它可以作为尝试类似事情的人的灵感
p <- ggplot(df_sample_dots, aes(x=Names, y=Values), show.legend = TRUE) + geom_point(size=5, aes(color=factor(Names))) +
geom_errorbar(aes(ymin=Values-dev, ymax=Values+dev), width=.2, position=position_dodge(.9), color="black")
p <- p + geom_hline(aes(yintercept=Values, linetype=Names), data=df_sample_hlines, show.legend = TRUE, color="black") +
geom_errorbar(aes(ymin=Values-dev, ymax=Values+dev), data = df_sample_hlines, color="thistle4", width=1, size=1)
像这样的事情怎么样:
library(ggplot2)
library(dplyr)
set.seed(12345)
toPlot <-
data.frame(
group = factor(sample(LETTERS[1:10],1000,TRUE))
) %>%
mutate(value = rnorm(1000) +
as.numeric(group)/10)
basePlot <-
ggplot(toPlot) +
stat_summary(aes(x = group
, y = value)
, fun.data = mean_cl_normal) +
theme_minimal()
basePlot
lineAdd <-
data.frame(
x = range(as.numeric(toPlot$group)) + c(-.5,.5)
, ymax = 1.2
, ymin = 0.8
)
basePlot +
geom_ribbon(
data = lineAdd
, mapping = aes(x = x
, ymax = ymax
, ymin = ymin)
, col = "light gray"
, alpha = 0.2
) +
geom_hline(yintercept = 1)
您仍然需要手动添加每一行(并为功能区生成数据),但如果您的输入数据集是一致的,您也可以将其自动化。