最近,这个社区极大地帮助了我让 Ridgeline 图与我的数据一起使用。现在我正在努力根据我的需要为它们着色。基本上我想要的是以不同的顺序绘制我的案例,但它们应该保持特定的颜色,这样即使以不同的顺序绘制,观察结果仍然可以识别。到目前为止,我未能将可用的解决方案应用于我的要求。
让我们以这个数据为例,我们有一个名字、一个平均值和一个 SD:
caseName caseMean caseSD
Svansdottir 2006 -0.0646 0.4032398
Guétin 2009 -0.4649 0.3995663
Raglio 2010a -0.2145 0.2814031
让我们首先按 caseMean 对它们进行排序:
df$caseName <- factor(df$caseName, levels = df$caseName[order(df$caseMean)])
并使用以下代码绘制它:
library(tidyverse); library(ggridges)
n = 100
df3 <- df %>%
mutate(low = caseMean - 3 * caseSD, high = caseMean + 3 * caseSD) %>%
uncount(n, .id = "row") %>%
mutate(x = (1 - row/n) * low + row/n * high,
norm = dnorm(x, caseMean, caseSD))
ggplot(df3, aes(x, caseName, height = norm, fill=caseName)) +
geom_ridgeline(scale = 2,alpha=0.75) +
scale_fill_viridis_d()
我们得到这个:
现在我们颠倒顺序
df$caseName <- factor(df$caseName, levels = df$caseName[order(-df$caseMean)])
并使用上面的代码再次绘图,我们看到绘图已经改变了颜色:
无论我放入的顺序如何,如何确保相同的箱子始终具有相同的颜色?
我希望有不需要我将颜色“硬连线”到特定案例名称的代码。我希望能够对具有 20、30 或更多观察值的山脊线图执行此操作。我选择了 viridis 调色板这一事实并不重要。我对任何解决方案都很满意(比如 heat.colors 或类似的东西)。