我正在尝试使用相同的连续调色板绘制两个图表。在一张图中,调色板表示的范围是 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。
它深埋在在线文档中,但您可以使用
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")
)