如何在ggplot住宅点地图中根据star列区分点的形状?
解决ggplot按star列设置点形状的问题
需求说明
想要绘制住宅位置地图,要求:
- 点根据分类变量
category区分两种颜色 star列标记为1的点显示星形等特殊形状
数据示例
| x | y | category | star |
|---|---|---|---|
| 123 | 456 | 1 | 0 |
| 143 | 556 | 0 | 0 |
| 124 | 556 | 1 | 1 |
| 233 | 256 | 1 | 0 |
现有代码(已实现按category分颜色)
ggplot(data = df, aes(x = x, y = y, color=category)) + geom_point()
解决方案
直接在aes映射里添加shape = factor(star),把数值型的star转成因子,让ggplot识别为分类变量分配形状。如果需要指定特定形状(比如把star=1设为星形),可以用scale_shape_manual自定义:
完整代码示例
ggplot(data = df, aes(x = x, y = y, color = category, shape = factor(star))) + geom_point(size = 3) + # 放大点尺寸,让特殊形状更显眼 scale_shape_manual(values = c("0" = 16, "1" = 8)) + # 0用实心圆点,1用星形 labs(shape = "是否标记为星点") # 自定义形状图例的标题
关键说明
factor(star):将star列的0/1数值转为分类变量,确保ggplot为不同值分配不同形状scale_shape_manual:手动指定形状编号,ggplot内置形状中8对应星形,16对应实心圆点,你可以根据需求替换成其他编号(比如17是三角形、15是正方形等)size = 3:调整点的大小,让特殊形状更容易识别
内容的提问来源于stack exchange,提问作者TvCasteren
相关产品推荐
相关产品推荐

