R ggplot不会显示图例颜色

Posted

技术标签:

【中文标题】R ggplot不会显示图例颜色【英文标题】:R ggplot won't show legend colors 【发布时间】:2021-10-29 12:37:27 【问题描述】:

我正在尝试使用 geom_linerange() 绘制一个绘图,其中 aes(color) 由一个变量给出。

我不明白为什么它在图例的框中不显示颜色。

这是我的情节代码:

estancias_uci %>% 
  arrange(desc(box),desc(first_cauris)) %>% 
  rowid_to_column("patient_id") %>% 
  ggplot(data=.,
         aes(x=nhc)) +
  geom_linerange(
    aes(ymin=first_cauris-hours(6),ymax=last_cauris+hours(6)),
    colour="grey",
    size=4,alpha=0.5) +
  geom_linerange(aes(ymin=from,ymax=to,color=box), size=2, alpha=0.9)  + 
  coord_flip() + 
  xlab("") + 
  ggtitle("UCI 2021") + 
  theme_classic() + 
  theme(plot.title = element_text(hjust = 0.5),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        legend.title.align = 0.5)

谢谢

可重现的代码

estancias_uci <- structure(list(nhc = c(1057591, 1867803, 1867803, 231669, 231669, 
    231669, 2829584, 2829584, 2877093, 2877093, 2877093, 2935589, 
    2935589, 3078408, 3188088, 3188088, 3193727, 3193727, 3193727, 
    6080761, 6787731, 6787731, 6787731), from = structure(c(1610125680, 
    1611092580, 1615554240, 1611701220, 1614024120, 1616442960, 1612849620, 
    1614024120, 1610797440, 1610797620, 1614249780, 1615318260, 1616508540, 
    1614952440, 1615236240, 1615395120, 1610057340, 1612637100, 1614171300, 
    1612305960, 1613691540, 1614372060, 1620653340), tzone = "UTC", class = c("POSIXct", 
    "POSIXt")), to = structure(c(1616187780, 1615554240, 1617456120, 
    1614024120, 1616442960, 1617471240, 1614024120, 1615053600, 1610797620, 
    1614249780, 1614622320, 1616508540, 1621436460, 1616434140, 1615395120, 
    1615817940, 1612637100, 1614171300, 1616434560, 1613989800, 1614372060, 
    1620653340, 1622131020), tzone = "UTC", class = c("POSIXct", 
    "POSIXt")), box = c("BOX-1", "BOX-1", "BOX-1", "BOX-1", "BOX-1", 
    "BOX-1", "BOX-1", "BOX-1", "BOX-1", "BOX-1", "BOX-1", "BOX-1", 
    "BOX-1", "BOX-1", "BOX-1", "BOX-1", "BOX-3", "BOX-3", "BOX-1", 
    "BOX-1", "BOX-1", "BOX-1", "BOX-1"), first_cauris = structure(c(1613347200, 
    1615161600, 1615161600, 1613606400, 1613606400, 1613606400, 1613606400, 
    1613606400, 1614211200, 1614211200, 1614211200, 1617667200, 1617667200, 
    1616371200, 1615766400, 1615766400, 1615161600, 1615161600, 1615161600, 
    1612742400, 1613952000, 1613952000, 1613952000), tzone = "UTC", class = c("POSIXct", 
    "POSIXt")), last_cauris = structure(c(1615939200, 1618012800, 
    1618012800, 1617667200, 1617667200, 1617667200, 1614816000, 1614816000, 
    1615161600, 1615161600, 1615161600, 1618444800, 1618444800, 1617062400, 
    1616976000, 1616976000, 1618272000, 1618272000, 1618272000, 1613606400, 
    1618444800, 1618444800, 1618444800), tzone = "UTC", class = c("POSIXct", 
    "POSIXt"))), row.names = c(NA, -23L), class = c("tbl_df", "tbl", 
    "data.frame"))

【问题讨论】:

你能给我们cauris_covid_clz吗? 我已经更新了它,包括代码和可重现的数据集,现在estancias_uci 已经加入。我忘了我是用cauris_covid_clz 加入的。 我在我的 RStudio 会话中运行了您的示例数据和示例代码,颜色出现在图例框中。 // 这个简化的例子是否有效ggplot(iris, aes(x=Sepal.Width)) + geom_linerange(aes(ymin=1,ymax=4,color=Species), size=2, alpha=0.9) 我重新开始了我的会话。当我缩放绘图时,我可以看到标签的颜色,但在绘图查看器中看不到。是否有任何参数可以设置方形图例的宽度?或者它是一个错误? 可能是一个错误。您正在运行哪些版本的 ggplot2? (我在 R 版本 4.0.4、ggplot2 版本 3.3.3 中测试过) 【参考方案1】:

问题似乎是您正在为这些颜色设置 alpha,但您不想在图例中使用 alpha。尝试添加

 guides(color=guide_legend(override.aes = list(alpha=1)))

到你的情节。这解决了我的问题。

【讨论】:

完美!也为我工作。

以上是关于R ggplot不会显示图例颜色的主要内容,如果未能解决你的问题,请参考以下文章

ggplot 有两个图例,颜色图例中显示错误的形状

R语言ggplot2可视化:使用ggplot2按照热力图的方式显示全是分类变量的dataframe数据并自定义因子(factor)的图例颜色legend

R语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legend to display percentage sign)

R语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legend to display percentage sign)

R - geom_line ggplot2中的手动图例颜色

将水平线添加到 R 中 ggplot2 中的堆叠条形图,并在图例中显示