情节推翻了ggplot2的scale_fill_manual的标签

Posted

技术标签:

【中文标题】情节推翻了ggplot2的scale_fill_manual的标签【英文标题】:plotly overrules ggplot2's scale_fill_manual's labels 【发布时间】:2021-12-29 05:31:27 【问题描述】:

我有一个样本数据集,其中包含周末日期和流失值,可以是负数,也可以是正数。在 ggplot2 中,我在值的符号上使用 scale_fill_manual() 作为组。 这可以很好地显示正值和负值的颜色。标签也会根据提供的标签进行重写。但是,如果我只是将它制作成一个绘图图,我会丢失我的标签,它们会被设置回 -1、1 因子。情节不支持这一点,如果是,他们是另一种完成这项工作的方法

library(ggplot2)
library(plotly)

dt <- structure(list(date = structure(c(18651L, 18658L, 18665L, 18672L, 
18679L, 18686L, 18693L, 18700L, 18707L, 18714L), class = c("IDate", 
"Date")), churn = c(-3.27088948787062, -0.582518144525087, -0.125024925224327, 
-0.333746898263027, -0.685714285714286, -0.340165549862042, 0.0601176470588235, 
-0.119351608461635, -0.0132513279284316, -0.011201854099989)), row.names = c(NA, 
-10L), class = c("data.table", "data.frame"))

plot_ggplot <- ggplot(dt, aes(x = date, y = churn * 100)) +
  geom_bar(stat = "identity", aes(fill = factor(sign(churn)))) +
  scale_fill_manual(
    values = c("#4da63f", "#e84e62"),
    breaks = c("-1", "1"),
    labels = c("Growing base", "Declining base")
  ) +
  ylim(-75, 25) +
  labs(
    title = "Weekly churn rate",
    fill = "Legend"
  )
plot_ggplot

plot_ggplotly <- ggplotly(plot_ggplot)

plot_ggplotly

【问题讨论】:

在将数据传递给ggplot之前将填充变量定义为一个因子。 这是否意味着 ggplotly 不支持这一点,我需要解决它在我的表中添加一个带有正确标签名称的因子列? 是的,据我所知不支持,这是最直接的解决方法。 谢谢,我想我会设法解决这个问题,但在此之前,我总是想确定是否真的需要我的解决方法,而不是因为我缺乏知识。 【参考方案1】:

这能解决问题吗?

dt$base = ifelse(sign(dt$churn)>0, "Growing base","Declining base")
plot_ggplot <- ggplot(dt, aes(x = date, y = churn * 100)) +
  geom_bar(stat = "identity", aes(fill = base)) +
  scale_fill_manual(
    values = c("#4da63f", "#e84e62"),
    ) +
  ylim(-75, 25) +
  labs(
    title = "Weekly churn rate",
    fill = "Legend"
  )
plot_ggplot
plot_ggplotly <- ggplotly(plot_ggplot)

编辑:我刚刚看了评论,我认为这是建议的内容

【讨论】:

感谢提出的建议,它确实解决了我的阴谋的结果。也很高兴知道我实际上必须使用这项工作,因为 ggplotly 不支持 ggplot 在scale_*_manual() 中所做的中断/级别

以上是关于情节推翻了ggplot2的scale_fill_manual的标签的主要内容,如果未能解决你的问题,请参考以下文章

R:ggplot2,我可以将情节标题设置为环绕并缩小文本以适应情节吗?

ggplot2 - 在情节之外进行注释

裁剪出情节周围的 ggplot2 空白

我图例上的形状似乎与情节 ggplot2 中显示的顺序不同

用ggplot2添加图例[重复]

ggplot2中的多个图