- 问题**
我正在尝试创建一个气泡网格热图,例如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)
1条答案
按热度按时间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有自己的颜色,那么你的小范围数据自然只会覆盖这个范围的一小部分。最好你可以开始使用奇怪的转换函数,使你的小范围数据覆盖你指定的色谱的更大份额。