ggplot2图例符号支持两位数字显示的代码适配问题咨询
ggplot2图例设置为1~33数字的解决方案
问题原因
你之前的实现逻辑是通过shape参数映射单个ASCII字符的编码,仅支持单个字符的展示,两位数字属于双字符,超出了shape参数的支持范围,因此会报错。
修改后代码
# 预定义图例需要展示的1~33数字标签 legend_nums <- as.character(1:33) ggplot(data_plot, aes(x = EV1, y = EV2, color = local)) + geom_point(size = 0, stroke = 0) + geom_text(check_overlap = F, aes(label = map_id, colour = local), show.legend = FALSE) + guides(colour = guide_legend( override.aes = list( label = legend_nums, size = 5 ), key_glyph = draw_key_text # 指定图例键使用文本形式绘制 )) + labs(title = "Microsatellite data", x = "PC1 (14.6%)", y = "PC2 (10.0%)", color = "Locality") + theme_bw()
可选调整项
- 如果你的分类变量
local本身的取值就是1~33,可直接删除预定义的legend_nums,将override.aes里的label替换为as.character(unique(data_plot$local))即可 - 两位数字显示时如果出现被截断的情况,可在
theme()中添加legend.key.width = unit(0.8, "cm")自行调整图例键宽度适配显示 - 若需要图例的分类说明文字也对应为1~33,可添加
scale_color_discrete(labels = legend_nums)参数
原效果预览

内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

