r - 在ggplot中自定义并排(闪避)条形图的颜色
问题描述
我正在尝试为并排条形图中使用的每个组创建自定义调色板。
#Setup Values & DataFrame
class_list <- c("A","B","C","D","E","F","G")
values_1 <- c(0.45,0.3,0.5,0.4,0.55,0.45,0.3)
values_2 <- c(0.4,0.45,0.3,0.45,0.4,0.55,0.4)
df <- data.frame(class=class_list, v1=values_1, v2=values_2)
#Melt Dataframe
df_plot <- melt(df, id.vars='class')
#Create Colour Palette
colour_palette = c("#CDF57A","#ABCE66","#375623","#FFFF00","#A87000","#732600","#FF0000")
#Create Dodged Bar Chart
p <- ggplot(df_plot, aes(x=class, y=value, fill=class, family=variable)) + theme_classic()
p <- p + geom_bar(stat='identity', position='dodge', colour='black')
p <- p + scale_fill_manual(values = colour_palette) + theme(legend.position="none")
p
产生:
代码的预期输出
但是,我正在尝试创建这样的东西:
期望的输出
(理想情况下,我可以有另一个自定义调色板,而不是一种颜色)
解决方案
为了达到您想要的结果,您可以使用 egclass
和variable
on进行映射。fill
interaction
作为如何添加第二个 platte 的示例,我只是颠倒了您的调色板以复制颜色数量:
library(ggplot2)
library(reshape2)
#Setup Values & DataFrame
class_list <- c("A","B","C","D","E","F","G")
values_1 <- c(0.45,0.3,0.5,0.4,0.55,0.45,0.3)
values_2 <- c(0.4,0.45,0.3,0.45,0.4,0.55,0.4)
df <- data.frame(class=class_list, v1=values_1, v2=values_2)
#Melt Dataframe
df_plot <- melt(df, id.vars='class')
#Create Colour Palette
colour_palette = c("#CDF57A","#ABCE66","#375623","#FFFF00","#A87000","#732600","#FF0000")
colour_palette <- c(colour_palette, rev(colour_palette))
#Create Dodged Bar Chart
p <- ggplot(df_plot, aes(x=class, y=value, fill=interaction(class, variable))) + theme_classic()
p <- p + geom_bar(stat='identity', position='dodge', colour='black')
p <- p + scale_fill_manual(values = colour_palette) + theme(legend.position="none")
p
推荐阅读
- r - 根据 Shiny 中的 textInput 值重命名变量
- java - 如何在 HttpURLConnection 中限制下载时间本身
- php - 我似乎无法正确查询我的自定义帖子类型。
- ios - UICollectionView - 当键盘出现时,整个集合视图随键盘移动
- python-3.x - 如何将批量 URL 发送到 grequest?
- elasticsearch - 无法访问 Kibana 仪表板
- javascript - 浏览器如何知道 HTTP 调用的状态发生了变化?
- nginx - 有没有办法让 nginx 终止 websocket 连接并只将套接字流传递给服务器?
- scheme - 如何读取加载在 guile 变量中的文件?
- python - Flask 无法识别我的自定义样式表