gpt4 book ai didi

r - 为条形图和线条创建通用图例

转载 作者:行者123 更新时间:2023-12-04 18:00:46 24 4
gpt4 key购买 nike

我对 R 很陌生,所以如果这是一个非常基本的问题,我提前道歉。

我正在尝试绘制一个图表,显示排放量和悬浮泥沙负荷 (SSL)。但是,我想说明的是,条形图代表放电,而折线图代表 SSL。我有两个想法:

  • 给放电和SSL的标签涂色分别对应条形图和线形图,让读者直观地知道哪个属于哪个。但是 ggplot2 不允许我这样做,因为它会将两个 y 轴着色为相同的颜色。
  • 建立一个图例,清楚地表明红线属于 SSL,蓝箱图属于放电。有帖子here它做了类似的事情,但我似乎无法实现。如果有人可以帮助我,我将不胜感激。

  • 这就是我的图表现在的样子。

    enter image description here

    这是我的脚本:
    library(ggplot2)
    library(gridExtra)
    library(RColorBrewer)
    library(tibble)

    P_Discharge <- Pyay$Mean.monthly.discharge
    P_MaxTemp <- Pyay$Mean.monthly.max.temperature
    P_MinTemp <- Pyay$Mean.monthly.minimum.temperature
    P_Rain <- Pyay$Max.monthly.rainfall
    P_SSL <- Pyay$Mean.suspended.sediment.load

    #reorderingthemonths
    Pyay$Month <- factor(Pyay$Month,
    levels=c("Jan", "Feb", "Mar", "Apr", "May", "Jun",
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
    #PlottingdischargeandSSL
    Pgraph1 <- ggplot(Pyay, aes(x=Month, group=2))
    Pgraph1 <- Pgraph1 + geom_bar(aes(y=P_Discharge), stat="identity", fill="blue")
    Pgraph1 <- Pgraph1 + geom_line(aes(y=P_SSL), colour="red", size=1) +
    labs(y=expression(Q/(m^{3}))) +
    labs(x="")

    #addingsecondaxis
    Pgraph1 <- Pgraph1 + scale_y_continuous(sec.axis=sec_axis(~., name=expression(
    Suspended~sediment~load~(10^{6}~t))))

    #colouringaxistitles
    Pgraph1 <- Pgraph1 + theme(axis.title.x=element_blank(),
    axis.title.y=element_text(size=14),
    axis.text.x=element_text(size=14))

    Pgraph1

    数据
    Pyay <- tibble::tribble(
    ~Month, ~Mean.monthly.discharge, ~Mean.monthly.max.temperature, ~Mean.suspended.sediment.load, ~Max.monthly.rainfall, ~Mean.monthly.minimum.temperature,
    "Jan", 8.528, 32.2, 3.407, 1.5, 16.2,
    "Feb", 6.316, 35.1, 2.319, 0.9, 17.8,
    "Mar", 7, 37.6, 2.587, 5.1, 21.2,
    "Apr", 8.635, 38.7, 3.573, 27.3, 24.7,
    "May", 12.184, 36, 5.785, 145.1, 25.6,
    "Jun", 30.414, 31.9, 21.811, 234.8, 24.8,
    "Jul", 70.753, 31, 70.175, 198, 24.8,
    "Aug", 79.255, 31, 81.873, 227.5, 24.7,
    "Sep", 67.079, 32.3, 65.798, 205.7, 24.6,
    "Oct", 53.677, 33.5, 47.404, 124, 24.2,
    "Nov", 22.937, 32.7, 14.468, 56, 21.7,
    "Dec", 12.409, 31.5, 5.842, 1.5, 18.1
    )

    最佳答案

    如果你把 colorfill aes() 中的参数你会得到一个传奇。与 scale_fill_manual我们将条形更改为蓝色。设置 colorfill labs()""删除它们。

    ##  Plotting discharge and SSL
    Pgraph1 <- ggplot(Pyay, aes(x=Month, group = 2))
    Pgraph1 <- Pgraph1 + geom_bar(aes(y=P_Discharge, fill = "discharge"), stat="identity")
    Pgraph1 <- Pgraph1 + geom_line(aes(y=P_SSL, colour = "SSL"), size=1)+ labs(y=expression(Q/(m^{3}))) + labs(x=" ")
    Pgraph1 <- Pgraph1 + scale_fill_manual(values = c("discharge" = "blue")) + labs(color = "", fill = "")

    #adding second axis
    Pgraph1 <- Pgraph1 + scale_y_continuous(sec.axis = sec_axis(~.,name = expression(Suspended~sediment~load~(10^{6}~t))))

    #colouring axis titles
    Pgraph1 <- Pgraph1 + theme(
    axis.title.x = element_blank(),
    axis.title.y = element_text(size=14),
    axis.text.x = element_text(size=14)
    )
    Pgraph1

    enter image description here

    关于r - 为条形图和线条创建通用图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254018/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com