r - 从 geom_point 和 scale_fill_gradient 向图例添加一个点
问题描述
我已经工作了几个月,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)的图例,仅显示其中一个具有白色背景和黑色轮廓的圆圈?
解决方案
要将额外元素添加到图例中,您必须将其添加到绘图中。你可以这样做:
geom_point(aes(alpha = ""), head(df_1, 1),
size = 5, fill = "white", pch = 21) +
在这里,我们在您的数据集中添加第一个点,设置它fill
和虚拟alpha
值(我们需要在其中设置一些内容aes
以将其添加到图例中)。我正在使用""
,所以我们不会在一个点旁边有任何文字。
此外,在 main 之前添加这一点很重要,geom_point
因为它将覆盖原始点(使用白色填充)。您还需要从 to 重置值alpha
并为in设置想要的图例名称。""
1
alpha
labs()
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")
PS。我对您的ggplot2
代码进行了一些更改:
aes
您可以在第一次ggplot
通话 中指定数据和。- 在 geom 图层
aes
中是第一个参数,数据是第二个。所以代替geom_point(data = df_1, aes(...)
. 你有用geom_point(aes(...), df_1)
。 color = "black"
是默认设置 - 您无需指定它。
推荐阅读
- pandas - 如何在 matplotlib 上将两个不同的熊猫数据框绘制成一张图表?
- html - HTML/CSS - 具有视差效果的图像上的图像
- xaml - 如何更改 XAML 弹出窗口的大小?
- elixir - Phoenix Ecto 上的 join 和 preload 有什么区别
- python - 欧拉计划问题 15 的程序仅适用于小于 12 的数字
- javascript - 当两个对象相互引用时,如何停止无限递归?
- java - 为什么我的数组从方法中返回空白,但在 main-Method 中运行时代码工作正常?
- azure - 我们如何在 azure sql 管理实例中连接只读意图?
- ubuntu - 删除 Hadoop 中的超级用户权限
- java - SonarLint - 将值传递给 @SuppressWarnings 以添加信息