R语言 修复ggplot2气泡网格图的图例和配色方案

ttcibm8c  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(254)
    • 问题**

我正在尝试创建一个气泡网格热图,例如here。但是,在修改这段代码时,我面临着几个问题。目前为止,我的代码是:

ggplot(yzlong2, aes(x = Period, y = Statement)) +
  geom_point(aes(col = Avg, fill = Avg, size = Count), shape = 21) +
  theme_minimal() +
  theme(
    legend.position = 'top',
    text = element_text(color = 'grey40', size = 20)
  ) +
  scale_size_area(max_size = 15, guide='none') +
  scale_fill_gradient(high = "blue", low= "red", name="Average",
                    labels = c("5", "4", "3", "2", "1"),
                    breaks = c(5, 4, 3, 2, 1))

我在使用此代码时遇到了几个问题:
1.如何在保留新填充图例的同时删除旧的蓝色填充渐变图例?
1.如何通过选择中间色来更改新填充图例的配色方案?我希望配色方案从红色到白色再到蓝色。如果有一种方法可以添加更多颜色,那可能会更好,因为平均值分布得非常紧密
1.如何将填充图例的比例从1(红色)更改为5(蓝色)?

    • 数据**
structure(list(Statement = c("A1", "A2", "A3", "A4", "A5", "A6", 
"A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "A16", 
"A17", "A18", "A19", "A20", "A21", "A22", "A23", "A24", "A25", 
"A26", "A27", "A28", "A29", "A30", "A31", "A32", "A33", "A34"
), Period = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Mar-1930", "Apr-1930"
), class = "factor"), Avg = c(4.6, 4.2, 4.6, 4.2, 4.2, 4.8, 4.2, 
3.6, 4, 4.2, 4.6, 4.6, 4.2, 4.2, 4.8, 4.6, 4.6, 4.33333333333333, 
4.5, 4.66666666666667, 4.33333333333333, 4.33333333333333, 4.33333333333333, 
4.33333333333333, 3.5, 3.83333333333333, 4, 4.5, 4.33333333333333, 
4.66666666666667, 4.33333333333333, 4.83333333333333, 4.83333333333333, 
4.66666666666667), Count = c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
6, 6)), row.names = c(NA, -34L), class = "data.frame")
    • 环境**
sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)
cpjpxq1n

cpjpxq1n1#

1.如何在保留新填充图例的同时删除旧的蓝色填充渐变图例?
看起来你实际上并没有使用颜色参数,你可以从aes()函数中删除col = Avg,在ggplot 2中,当涉及到像圆这样的内部形状时,color表示轮廓,fill表示内部。
因此删除col = Avg是一种选择,如果出于某种原因你想保留它,但又不想保留图例,那么就在代码中添加+guides(color = 'none')来去掉颜色图例。
1.如何通过选择中间色来更改新填充图例的配色方案?我希望配色方案从红色到白色再到蓝色。如果有一种方法可以添加更多颜色,那可能会更好,因为平均值分布得非常紧密
1.如何将填充图例的比例从1(红色)更改为5(蓝色)?
scale_fill_gradient2() scale函数合并了一个“middle”。你也可以使用limits选项让它运行从1到5的整个范围。注意这会给予你一个相当窄的颜色范围,因为你的大部分数据只在那个尺度的一个很窄的范围内。真正解决这个问题的唯一方法是选择距离更远的低颜色和高颜色。没有真正的方法可以解决这个问题-如果你想让1和5有自己的颜色,那么你的小范围数据自然只会覆盖这个范围的一小部分。最好你可以开始使用奇怪的转换函数,使你的小范围数据覆盖你指定的色谱的更大份额。

library(ggplot2)

ggplot(yzlong2, aes(x = Period, y = Statement)) +
  geom_point(aes(fill = Avg, size = Count), shape = 21) +
  theme_minimal() +
  theme(
    legend.position = 'top',
    text = element_text(color = 'grey40', size = 20)
  ) +
  scale_size_area(max_size = 15, guide='none') +
  scale_fill_gradient2(high = "blue", mid = 'white', low= "red", name="Average",
                      midpoint = 3,
                      limits = c(1, 5))

相关问题