【发布时间】:2018-03-01 19:57:09
【问题描述】:
我正在尝试两个用 ggplot2 制作双 y 轴图。但是,主 y 轴文本值已更改(和限制),并且其中一个变量显示错误(“均值”变量)。 编辑:“均值”变量的文本标签范围从 0.55 到 0.75,因此很难看到变量。但是,在该图的原始步骤中 (p )它的范围从 0.7757 到 0.7744。它应该显示为原始步骤(也许它必须与 ggplot 调用中的数据操作有关?)此外,是否可以将轴 y1 文本与要显示的轴 y2 文本协调同一水平线?
# dput(coeff.mean)
coeff.mean <- structure(list(individuals = c(5L, 18L, 31L, 43L, 56L, 69L, 82L,
95L, 108L, 120L, 133L, 146L, 159L, 172L, 185L, 197L, 210L, 223L,
236L, 249L, 262L, 274L, 287L, 300L, 313L, 326L, 339L, 351L, 364L,
377L), mean_d = c(0.775414405190575, 0.774478867355839, 0.774632679560057,
0.774612015422181, 0.774440717600404, 0.774503749029999, 0.774543337328481,
0.774536584528457, 0.774518615875444, 0.774572944896752, 0.774553554507719,
0.774526346948343, 0.774537645238366, 0.774549039219398, 0.774518593880137,
0.77452848368359, 0.774502654364311, 0.774527249259969, 0.774551190425812,
0.774524221826879, 0.774514765537317, 0.774541221078135, 0.774552621147008,
0.774546365564095, 0.774540310535789, 0.774540468208943, 0.774548658706833,
0.77454534219406, 0.774541081476004, 0.774541996470423), var_d = c(0.000438374265308954,
0.000345714068446388, 0.000324909665783972, 0.000318897997146887,
0.000316077108040133, 0.000314032075708385, 0.000310447758209298,
0.000310325171003455, 0.000311927176741998, 0.000309622062319051,
0.000308772480851544, 0.000308388263293765, 0.000306838067001956,
0.000307838047303517, 0.000307737478217495, 0.000306351076037266,
0.000307288393036824, 0.000306717640522594, 0.000306768886331324,
0.000306897320278579, 0.000307154374510682, 0.000306352361061403,
0.000306998606721366, 0.000306434828650204, 0.000305865398401208,
0.000306061994682725, 0.000305934443005304, 0.000305853730364841,
0.000306181262913308, 0.000306820996289535)), .Names = c("individuals",
"mean_d", "var_d"), row.names = c(NA, -30L), class = c("tbl_df",
"tbl", "data.frame"))
p <- ggplot(coeff.mean, aes(x=individuals))
p <- p + geom_line(aes(y = mean_d, colour = "mean")) + geom_point(aes(y = mean_d, colour = "mean"))
p <- p + geom_line(aes(y = var_d*(max(mean_d)/max(var_d)), colour = "var")) + geom_point(aes(y = var_d*(max(mean_d)/max(var_d)), colour = "var"))
p <- p + scale_y_continuous(sec.axis = sec_axis(~.*(max(coeff.mean$var_d)/max(coeff.mean$mean_d)), name = "var"))
p <- p + scale_colour_manual(values = c("black", "grey"))
p <- p + labs(y = "mean", x = "Resampled", colour = "Statistic")
print(p)
我非常感谢任何建议。
【问题讨论】:
-
我认为您需要更具体地了解情节的问题。 y 轴值应该是多少?哪个变量显示错误?应该如何显示?
-
@bdemarest 我已经编辑了这个问题。提前致谢。
-
需要重新调整一个或两个或您的 y 变量,以便在单个图上显示
mean和var的全部范围。但随后显示的 y 轴值将是缩放值。因此,您必须手动设置 y 轴中断和值以显示原始值。 ggplot 不会自动进行这些调整,部分原因是作者不鼓励双轴绘图。 -
@bdemarest 感谢您的评论。我会尽力按照你说的去做。老实说,我也不喜欢使用这种绘图,但是在这种特殊情况下(考虑到我想以这种方式绘制多个参数)最好使用 5 个绘图而不是 10 个绘图。
-
你的问题是你的方差不是乘法的,而是加法的。每个值的范围都很窄(+/- 0.0001),所以乘以你的方差将使你的平均值的分布相形见绌。
标签: r ggplot2 axis-labels