如何为R语言riverplot包生成的河流图添加颜色对应图例?
可以实现,直接使用R基础绘图系统的legend()函数就能完成需求,无需额外依赖其他包。
实现要点
- 绘图前调整底部边距,预留图例放置空间,避免图例被截断
- 可直接从riverplot对象中提取已定义的节点颜色与对应标签,也可以根据需求自定义图例映射关系
- 调用
legend()指定位置为底部,设置填充色与说明文字的对应关系即可
完整示例代码
library(riverplot) # 生成示例河流图对象 river <- riverplot.example() # 调整绘图边距,四个参数分别对应下、左、上、右的边距大小,增大底部边距放图例 par(mar = c(6, 1, 1, 1)) # 绘制河流图 plot(river, plot_area = 0.9) # 从riverplot对象中提取所有节点的颜色与对应标签 node_cols <- sapply(river$styles, function(style) style$col) node_labels <- names(node_cols) # 绘制底部图例 legend( x = "bottom", legend = node_labels, fill = node_cols, horiz = TRUE, # 横向排列图例,适配底部放置的需求 bty = "n", # 隐藏图例边框,可根据需求调整 cex = 0.8, # 控制图例文字大小 xpd = TRUE, # 允许在绘图区域外绘制图例,避免被截断 inset = c(0, 0.01) # 微调图例与底部边距的距离 )
如果需要自定义图例的说明文字,直接修改node_labels的内容即可,只要保证顺序和node_cols的颜色顺序一一对应就不会出错。如果需要展示的是水流而非节点的颜色映射,从river$edges字段中提取对应颜色即可。
内容的提问来源于stack exchange,提问作者PaulB
相关产品推荐
相关产品推荐

