使用viridis包设置ggplot2条形图颜色失效,求解决方法
问题解决:ggplot条形图无法应用viridis的magma配色
你的代码里有几个关键问题导致无法正常应用viridis配色,修正如下:
问题点与修正说明
- 函数拼写错误:
geom bar需改为geom_bar(),geomtext需改为geom_text(),函数名不能有空格或拼写错误。 - 配色函数误用:条形图的填充色要使用
scale_fill_viridis()(scale_color_viridis()仅用于线条/文本颜色);同时你指定的是magma配色,代码里的option = "viridis"要改成option = "magma"。 - 缺少颜色映射:要让不同类别的条形显示不同颜色,必须在
ggplot()的aes()中添加fill = family,将颜色与family变量绑定。 - 列名空格问题:
total members列名带空格,建议改为total_members(更符合R的命名规范),或者用反引号包裹避免语法错误。
修正后的完整代码
library(ggplot2) library(viridis) # 修改列名,去掉空格 barplotforraredisease <- data.frame( family = c("Singleton", "Family of 2", "Family of 3", "Family of 4", "Family of 5"), total_members = c(108, 52, 121, 9, 2) ) p <- ggplot(data = barplotforraredisease, aes(x = family, y = total_members, fill = family)) + geom_bar(stat = "identity") + geom_text(aes(label = total_members), vjust = -0.3, size = 3.5) + theme_minimal() + ggtitle("Number of families tested") + scale_fill_viridis(discrete = TRUE, option = "magma") print(p)
补充说明
如果不需要每个类别单独配色,只是想统一用magma色系的某个颜色,可以不用在aes()里加fill,直接在geom_bar()里写fill = magma(1),但你的需求应该是离散配色,所以上面的代码更符合预期。
内容的提问来源于stack exchange,提问作者Ar1229
相关产品推荐
相关产品推荐

