ggplot中的两个不同的颜色键

时间:2019-02-13 11:45:03

标签: r ggplot2 color-key

我想使用两个不同的色标两次绘制点:

在此示例中,淹没了5个点,颜色映射到两个协变量(cov1和cov2):cov1和cov2的比例分别为1到5和0.01到0.05。

我希望有2个独立的颜色键,一个用于cov1,一个用于cov2, 如下图所示。但是在下面的图形中,我使用了“ color = cov1”末尾的“ fill = cov2”以带来另一个颜色键...

任何帮助将不胜感激。

$options = "";
if (mysqli_num_rows($query) > 0) {
    while ($row = mysqli_fetch_array($query)) {

enter image description here

2 个答案:

答案 0 :(得分:4)

在基本的ggplot2中,如果我没记错的话是不可能的。但是此存储库可能是您的答案:

https://github.com/eliocamp/ggnewscale

或这个(在上一个描述中提到):

https://github.com/clauswilke/relayer

我已经很长时间没有使用ggplot2了,所以我对这两个都不熟悉,但是我记得我至少使用了其中一个。

我刚刚写了一个简单的示例来检查它是否有效:

d1 <- data.frame(x=1:5, y=1)
d2 <- data.frame(x=1:5, y=2)

library(ggplot2)
library(ggnewscale)

ggplot() +
  geom_point(data = d1, aes(x=x, y=y, color = x)) +
  scale_color_continuous(low = "#0000aa", high="#ffffff") +
  new_scale_color() +
  geom_point(data = d2, aes(x=x, y=y, color = x)) +
  scale_color_continuous(low = "#aa0000", high="#00aa00") 

example

它似乎可以根据需要工作。

答案 1 :(得分:2)

我使用了您的想法,将colfill结合在一起,并使用小型技巧为cov1cov2使用不同的形状:

# sample data
my_data <- data.frame(x = 1:5,
                      cov1 = 1:5,
                      cov2 = seq(0.01, 0.05, 0.01))

library(ggplot2)

ggplot() + 
  geom_point(data = my_data, aes(x = x, y = 0.5, col = cov1), shape = 16) +
  scale_color_continuous(low = "red1", high = "red4") + 
  geom_point(data = my_data, aes(x = x, y = -0.5, fill = cov2), shape = 21, col = "white", size = 2) + 
  ylim(-1, 1)

enter image description here

希望有帮助。