R语言 带有ggplot2的双轴图

ecr0jaav  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(216)

Example I want to replicate我需要用ggplot 2在R中绘制一个两轴图。第一个y轴从-10到10,第二个,轴从0到10。我添加了一个示例。请让我知道是否有办法用ggplot 2完成此操作。
我使用了这段代码,但结果是第一个轴从-5到10,第二个轴从5到10。我想得到我前面定义的断点。

df %>% filter(Country == "Chile" & year >= 1973) %>% ggplot(aes(x = year)) +
geom_line(aes(y = polity2, colour = "Polity 2")) + geom_line(aes(y = gee_totGDP,colour = "gee_totGDP")) + scale_y_continuous(sec.axis = sec_axis(~.*-1,name = "gee_totGDP")) + scale_colour_manual(values = c("blue", "red"))
58wvjzkj

58wvjzkj1#

我根据示例图像生成了一些四行的伪数据。
为了绘制曲线图,我使用limits()参数设置了第一个轴的界限,然后使用一个变换公式设置了第二个轴,变换公式应该是axis 2 =(axis 1 + 10)/2。

library(tidyverse)

    df <- tibble(year = seq(1985, 2000, 5),
             ed = c(6, 6, 8, 5),
             polity = c(-10, -10, -8, -8))

    df %>%
             ggplot(aes(x = year)) +
             geom_line(aes(y = polity)) + 
             geom_line(aes(y = ed)) +
             scale_y_continuous(limits = c(-10, 10),
                                sec.axis = sec_axis(~(. + 10)/2))

qkf9rpyu

qkf9rpyu2#

可按如下方式对两个轴使用scale_y_continuous()

ggplot(data = df, aes(x = year)) +
 geom_line(aes(y = polity2, color = "Polity 2")) +
 geom_line(aes(y = gee_totGDP, color = "gee_totGDP")) +
 scale_y_continuous(limits = c(-10, 10), name = "Polity 2") +
 scale_y_continuous(limits = c(0, 10), sec.axis = sec_axis(~., name = 
  "gee_totGDP")) +
 scale_color_manual(values = c("blue", "red"))

相关问题