我已经ggplot2
工作了几个月,但是我仍然很容易陷入基础问题,因为这里的选择几乎是无限的。
假设我创建了一个简单的图,如下所示:
set.seed(100)
df_1 = data.frame(lat = rnorm(20),
lon = rnorm(20),
x = rnorm(20))
library(ggplot2)
p = ggplot() +
geom_point(data = df_1,
aes(x=lon, y=lat, fill = x),
size = 5, colour = 'black', pch = 21) +
scale_fill_gradient2(low = "green", mid = 'white', high = "yellow",
breaks = c(-1, 0, 1),
labels = c('-1', '0', '1'),
limits = c(-1,1))
print(p)
如何添加第二个带有标题(例如y)的图例,该图例仅显示那些带有白色背景和黑色轮廓的圆圈?
答案 0 :(得分:2)
要在图例中添加其他元素,必须将其添加到绘图中。您可以执行以下操作:
geom_point(aes(alpha = ""), head(df_1, 1),
size = 5, fill = "white", pch = 21) +
在这里,我们要在数据集中添加第一个点,并将其设置为fill
和虚拟alpha
值(我们需要在aes
内进行设置以将其添加到图例中)。我正在使用""
,所以一个点旁边不会有任何文本。
另外,将这一点添加到主geom_point
之前也很重要,因为它将覆盖原始点(用白色填充)。您还需要将alpha
的{{1}}值重置为""
,并在1
中为alpha
设置所需的图例名称。
labs()
PS。我对您的library(ggplot2)
ggplot(df_1, aes(lon, lat, fill = x)) +
geom_point(aes(alpha = ""), head(df_1, 1),
size = 5, fill = "white", pch = 21) +
geom_point(size = 5, pch = 21) +
scale_fill_gradient2(low = "green", mid = "white", high = "yellow",
breaks = c(-1, 0, 1),
labels = c("-1", "0", "1"),
limits = c(-1, 1)) +
scale_alpha_manual(values = 1) +
labs(alpha = "y")
代码进行了一些更改:
ggplot2
调用内指定数据和aes
。 ggplot
是第一个参数,数据是第二个参数。因此,而不是aes
。您已使用geom_point(data = df_1, aes(...)
。 geom_point(aes(...), df_1)
是默认设置-您无需指定它。答案 1 :(得分:1)
您可以添加一个因子并使用scale_color_manual
:
set.seed(100)
df_1 = data.frame(lat = rnorm(20),
lon = rnorm(20),
x = rnorm(20),
new = rep('Coordinates', 20))
library(ggplot2)
p = ggplot() +
geom_point(data = df_1,
aes(x=lon, y=lat, fill = x, colour = new),
size = 5, pch = 21) +
scale_fill_gradient2(low = "green", mid = 'white', high = "yellow",
breaks = c(-1, 0, 1),
labels = c('-1', '0', '1'),
limits = c(-1,1)) +
scale_color_manual(name = "", values = "black")
print(p)