【发布时间】:2021-12-01 02:41:01
【问题描述】:
我有一个堆积条形图,我想重新排列图例的显示方式。我希望图例显示“社会”、“经济”和“环境”的顺序,但颜色保持不变。我一直在尝试不同的解决方案,但我是新手,可能写错了!
我认为我在正确的轨道上,但它不起作用:
mortality_df$subsystem <- factor(mortality_df$subsystem, levels = c("Social", "Economic", "Environmental"))
没有对图例重新排序的代码:
mortality_df <- results_df %>%
pivot_longer(
cols = starts_with("imp_"),
names_to = "mortality",
names_prefix = "imp_",
values_to = "importance"
) %>%
relocate(c(feature, subsystem, mortality, importance, label))
mortality_df
diabetes_plot <- mortality_df %>%
filter(mortality == "diabetes") %>%
filter(importance > 0) %>%
ggplot(aes(x = reorder(label, importance), y = importance, fill = subsystem)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_y_continuous(name = "Importance Score") +
scale_x_discrete(name = "") +
theme_minimal() +
theme(aspect.ratio = 1.45)
diabetes_plot
创建这个:
【问题讨论】:
-
也许你可以试试这个
scale_fill_manual(breaks = c("Social", "Economic", "Enviromental), values = c("red", "green", "blue") -
也许 fill = rev(subsystem) 有效?我没有数据,所以无法测试。
-
@pbraeutigm 是的,我意识到这可能是个问题。我不太确定如何在这里共享数据集。谢谢你的建议!
-
我没有你的数据,所以很难确切知道,但你可以试试
+ scale_x_discrete(limits=c( "Social", "Economic", "Environmental")) -
(1) 重复之前的评论,“我无法测试它” 很重要:我们没有样本数据,所以这只是推测。 (2) 我在ggplot2 中找不到关于ordering(轴或图例元素)的问题,使用
factor(., levels=)无法完全解决。当您定义factor并使用levels=指定所述因素的排序 时,ggplot2 倾向于遵守该规范。 (两个这样的问题:stackoverflow.com/q/3253641/3358272 和 stackoverflow.com/q/12774210/3358272,尽管它们是对轴进行排序。)