【发布时间】:2020-05-28 06:45:53
【问题描述】:
我在 ggplot 对象中更改图层时发现了一个意外行为。我从一个初始情节开始。
library(ggplot2)
p <-
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Petal.Width, size = Petal.Length)) +
geom_point() +
scale_x_continuous(position = 'top') +
scale_size_area('Size Name', max_size = 12) +
scale_color_gradientn(
'Color Name',
colors = scales::brewer_pal(type = 'div')(7),
limits = c(-3, 3),
breaks = c(-3, -1.5, 0 , 1.5, 3)
)
print(p)
然后我决定将点图层更改为具有不同形状 21 的点图层。形状 21 具有填充而不是颜色。但是,我想保持其他一切不变。为了节省打字,我首先删除了初始点图层,然后添加了新的图层。但是,我发现填充的图例在应该显示的时候没有显示。
p$layers
#> [[1]]
#> geom_point: na.rm = FALSE
#> stat_identity: na.rm = FALSE
#> position_identity
p$layers[[1]] <- NULL
p_with_name <-
p +
geom_point(aes(fill = Petal.Width), shape = 21, color = 'black') +
scale_fill_gradientn(
'Color Name',
colors = scales::brewer_pal(type = 'div')(7),
limits = c(-3, 3),
breaks = c(-3, -1.5, 0 , 1.5, 3)
)
print(p_with_name)
但是,当我添加没有标题的填充比例时,或者使用与颜色比例不同的标题时,它会正确显示。
p_no_name <-
p +
geom_point(aes(fill = Petal.Width), shape = 21, color = 'black') +
scale_fill_gradientn(
colors = scales::brewer_pal(type = 'div')(7),
limits = c(-3, 3),
breaks = c(-3, -1.5, 0 , 1.5, 3)
)
print(p_no_name)
p_diff_name <-
p +
geom_point(aes(fill = Petal.Width), shape = 21, color = 'black') +
scale_fill_gradientn(
'Diff Name',
colors = scales::brewer_pal(type = 'div')(7),
limits = c(-3, 3),
breaks = c(-3, -1.5, 0 , 1.5, 3)
)
print(p_diff_name)
Created on 2020-05-28 by the reprex package (v0.3.0)
是否可以添加与色标同名的填充标尺并让它出现?这将帮助我大大简化我的代码。
【问题讨论】: