R语言ggplot2:如何实现同一变量同步控制点的大小与颜色并解决黑色叠加点问题
解决ggplot中同一变量同步控制点大小与颜色时的黑色叠加点问题
嘿,我来帮你搞定这个问题!你遇到的黑色叠加点问题,大概率是因为geom_point()默认的**边框(stroke)**设置在搞鬼——当你同时用变量控制点的大小和颜色时,如果没有明确关闭边框,ggplot会给每个点加上黑色的边框,看起来就像在彩色点上叠了个黑点。而且你的大小与颜色同步映射的思路是完全正确的,不需要调整这部分逻辑,下面是几个靠谱的解决方法:
方法1:关闭点的边框(最推荐)
直接在geom_point()里设置stroke = 0,彻底去掉黑色边框,让彩色实心点完全显示出来。修改后的代码如下:ggplot(df, aes(x=day_of_week, y=light, color = speed_limit, size=speed_limit)) + geom_point(stroke = 0)这个方法简单直接,不会对颜色和大小的同步映射产生任何影响。
方法2:指定无边框的实心点形状
ggplot里有不少无边框的实心点形状(比如shape = 16、shape = 19),你可以直接指定这类形状来避免边框干扰:ggplot(df, aes(x=day_of_week, y=light, color = speed_limit, size=speed_limit)) + geom_point(shape = 16)这个思路和方法1类似,都是通过消除边框来解决黑点问题。
方法3:过滤数据集的缺失值
如果你的speed_limit变量里存在NA值,ggplot会把这些缺失值对应的点默认渲染成黑色(因为NA无法映射到颜色和大小的规则里),看起来就像叠在了彩色点上。这种情况下可以先过滤掉缺失值:# 先清理数据集,去掉speed_limit为NA的行 df_clean <- df[!is.na(df$speed_limit), ] # 用清理后的数据集绘图 ggplot(df_clean, aes(x=day_of_week, y=light, color = speed_limit, size=speed_limit)) + geom_point()
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

