r - 在 R 中布置多个具有不同比例的双 y 轴的图
问题描述
我用 ggplot2 绘制了三个数字,我喜欢将它们重新排列到一页。每个图形都有双 Y 轴,这些图形具有不同的第二个 Y 轴缩放比例。如果我使用 grid.arrange 或类似的函数,它将导致我的第一个和第二个图中的缺失值,这实际上将使用第三个图的第二个 Y 轴刻度。它是这样的:
但如果我单独做,它应该是:
代码是这样的:
scaleFactor <- max(sum_PDSI$PDSI_1) / max(sum_PDSI$Yield_1)
plot1 <- ggplot(sum_PDSI,aes(Year)) +
geom_line(aes(y=PDSI_1),color = "BLUE", size = 0.8) +
geom_line(aes(y=Yield_1 * scaleFactor),color = "RED", size = 0.8) +
scale_y_continuous(name="PDSI", limits = c(-8, 6),
sec.axis=sec_axis(~./scaleFactor, name="Yield (BU/Acre)")) +
theme_set(theme_grey()) +
theme(axis.title.y.left=element_text(color="blue"),
axis.text.y.left=element_text(color="blue"),
axis.title.y.right=element_text(color="red"),
axis.text.y.right=element_text(color="red")) +
theme(axis.title.x = element_blank()) +
annotate("text", x = 1982, y = 5, hjust = 0, size = 4,
label = "R = 0.46 P < 0.01")
plot1
数据是:
sum_PDSI = data.frame(Year = 1981:2016,
PDSI_1 = runif(36, -4, 4),
PDSI_2 = runif(36, -4, 4),
PDSI_3 = runif(36, -4, 4),
Yield_1 = runif(36, -40, 80),
Yield_2 = runif(36, -1000, 1000),
Yield_3 = runif(36, -10, 20))
解决方案
推荐阅读
- frama-c - E-ACSL 逻辑函数调用错误 - 未绑定函数
- android - android setOnInfoWindowClickListener - 传递更多值
- java - 如何使用 spring boot、jpa、hibernate 和 mysql 验证用户登录并传递 JWT 令牌
- typescript - 这个 TypeScript 语法是什么意思?
- spotfire - SPOTFIRE:在 OVER 中使用 $csearch 后访问列名
- java - Google Play 应用签名步骤
- dependencies - Espresso 测试的正确依赖项是什么?
- ionic-framework - InAppBrowser 到 Ionic 页面之间的导航
- python - 使用 python 和 watson 运行应用程序时遇到问题
- java - 双向@OneToOne 级联问题 JPA/Hibernate/Spring-Data