我想使用两个不同的色标两次绘制点:
在此示例中,淹没了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)) {
答案 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")
它似乎可以根据需要工作。
答案 1 :(得分:2)
我使用了您的想法,将col
和fill
结合在一起,并使用小型技巧为cov1
和cov2
使用不同的形状:
# 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)
希望有帮助。