【发布时间】:2019-06-22 03:38:42
【问题描述】:
我的数据如下:
structure(list(Year = 1994:2016, Kcalpd = c(86L, 91L, 98L, 107L,
116L, 126L, 123L, 112L, 103L, 102L, 103L, 92L, 77L, 59L, 43L,
29L, 19L, 14L, 13L, 12L, 12L, 10L, 9L), Thtonnes = c(728.364,
757.467, 780.423, 792.756, 701.685, 720.71, 677.292, 761.649,
668.218, 679.042, 974.355, 1005.035, 1123.09, 1055.07, 1092.498,
1100.654, 899.767, 1018.462, 1046.096, 1084.173, 1158.217, 802.194,
276.773)), row.names = c(NA, -23L), class = "data.frame", .Names = c("Year",
"Kcalpd", "Thtonnes"))
而且,我的代码如下:
scaleFactor <- max(wfd$Thtonnes) / max(wfd$Kcalpd)
ggplot(wfd, aes(x=Year)) +
geom_col(aes(y=Thtonnes), fill="blue") +
geom_col(aes(y=Kcalpd * scaleFactor), fill="red") +
scale_y_continuous(name="Thtonnes", sec.axis=sec_axis(~./scaleFactor, name="Kcalpd")) +
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")
)
此代码改编自站点:Plot with 2 y axes, one y axis on the left, and another y axis on the right,由威震天提供。此 Web 链接为在一个图形中绘制条形图和线形图提供了一个很好的解决方案。但是,它不会导致我将两个不同比例的数据绘制为一张图中的条形图。因此,到目前为止,我已经达到了以下阶段。 问题是我的酒吧是一个在另一个之后,就像下面给出的图片一样。我希望它们每年都被并排绘制。
这个问题与我和 NortonGon 提到的链接完全不同。不重复的原因如下: 1)没有绘制两个不同比例的条形图。大多数情况下,这是通过刻面完成的。 2)我已经证明可以绘制两个不同的条形图,而无需在 2 个不同的 y 轴上重新缩放。 3)如果重复标签被删除,那么我也将代码上传。
【问题讨论】:
-
可能不是您想要的,但一种方法是
melt()您的数据,然后使用facet_wrap()在不同的窗格中绘制这两个变量。您可以允许scales = "free_y"单独“放大”每个窗格。 -
我不想走那条路。实际上,问题来自不同规模的数据。如果我不必担心比例,我可以轻松地将它们并排绘制。但是,那么一类条形将几乎不可见。
-
您链接的问题中广泛解决了该主题。除非另有说明,正如您可以从 Hadley 的回答中看到的那样,简短的回答是无法完成。尝试浏览那里的所有答案。
-
要么可以,否则不重复。