ggplot 中相同的连续调色板

问题描述 投票:0回答:1

我正在尝试使用相同的连续调色板绘制两个图表。在一张图中,调色板表示的范围是 0-0.48,绝大多数点在 0-0.18 之间。另一个图的范围是 0-0.08。我想在两个图上使用相同的调色板,并具有与相同值关联的相同颜色。

下面是一个可重现的示例(带有真实的颜色数据):

color_range_df1 <- c("0.005","0.000","0.000","0.007","0.007","0.006","0.005",
                     "0.002","0.063","0.001","0.101","0.151","0.006","0.178",
                     "0.140","0.150","0.130","0.155","0.175","0.175","0.152",
                     "0.006","0.058","0.167","0.151","0.000","0.050","0.015",
                     "0.079","0.003","0.043","0.105","0.078","0.091","0.006",
                     "0.159","0.089","0.151","0.002","0.004","0.174","0.087",
                     "0.050","0.172","0.099","0.018","0.060","0.115","0.014",
                     "0.000","0.004","0.000","0.000","0.000","0.000","0.000",
                     "0.135","0.003","0.003","0.006","0.000","0.000","0.000",
                     "0.488","0.000","0.003","0.000","0.048","0.000","0.000",
                     "0.133","0.161","0.001","0.079","0.000","0.139","0.000",
                     "0.041","0.001","0.175","0.101","0.058","0.180","0.140")

color_range_df2 <- c("0.057","0.022","0","0.009","0.049","0.048","0.055","0.048",
                     "0.031","0.049","0.043","0.047","0.06","0.059","0.049","0.045",
                     "0.042","0.049","0","0","0","0","0","0","0","0.034","0.056",
                     "0.05","0.046","0.053","0.033","0.047","0.047","0.031",
                     "0.046","0.084","0.079")


df1_bigrange_and_outlier<- data.frame(X = 1:84, y = 1:84, color = color_range_df1)
df2_smallrange <- data.frame(X = 1:37, y = 1:37, color = color_range_df2)


ggplot(data = df1_bigrange_and_outlier, aes(x = X, y = y, color = color)) +
  geom_point()

在此示例中,我希望 0.488 点具有非常明显的颜色,并且 0-0.05 和 0-0.18 之间存在视觉差异。

我已经尝试过了

pal <- c(colorRampPalette(c("#c9e2f6", "#95cbee", "#0099dc",
                             "#0D98BA","#4ab04a", "#C0FF02", "#ffd73e"))(10),
          colorRampPalette(c("#e29421", "#e29421", "#f05336", "#ce472e", "#8B0000"))(30))

这对于图 1 效果很好,但我不确定如何将其转换为第二个图,其中范围仅从 0-0.08 而不是 0-0.48。

r ggplot2 colors colorbar
1个回答
0
投票

它深埋在在线文档中,但您可以使用

limits
来指定色标的范围。然而,美学将成为一个问题:对于这样不同的范围,即使在你解决了@stefan 的观点之后,歧视也将成为一个问题。

以下内容可能会接近您想要的,只需对原始设置进行一些小修改即可:

df1_bigrange_and_outlier<- data.frame(X = 1:84, y = 1:84, color = as.numeric(color_range_df1))
df2_smallrange <- data.frame(X = 1:37, y = 1:37, color = as.numeric(color_range_df2))


ggplot(
  data = df1_bigrange_and_outlier, 
  aes(x = X, y = y, color = color)
) +
  geom_point() +
  scale_color_steps(
    limits = c(0, 0.5), 
    low = scales::muted("blue"), 
    high = scales::muted("red")
)

ggplot(
  data = df2_smallrange, 
  aes(x = X, y = y, color = color)
) +
  geom_point() +
  scale_color_steps(
    limits = c(0, 0.5), 
    low = scales::muted("blue"), 
     high = scales::muted("red")
)

© www.soinside.com 2019 - 2024. All rights reserved.