繁体   English   中英

如何使用R和ggplot2制作具有从数组中选取的条形颜色的条形图?

[英]How to use R and ggplot2 to make a barplot with bar colors picked from an array?

我一直在摸索,试图弄清楚如何编写应该是一个非常简单的R脚本。 我要做的就是制作一系列高度相同但颜色不同的条形图。

因此,可以说我想并排设置十个相等的高度和宽度条,但是要从十六进制颜色代码列表中选择颜色。

例如,我要使用以下10种十六进制编码来十个小节(并且我可以选择一个高和宽用于所有小节,比如说10px x 2px):#646464,#62cd64,#b04664,#396164,#f6f664 ,#f5a664,#176b64,#00ff64,#1c0064,#921964

在此处输入图片说明

我真的很想找到一种使用ggplot2做到这一点的方法,以便可以操纵主题设置。 任何帮助表示赞赏!

编辑:我尝试使用此代码的建议之一:

library(ggplot2)
library(grid)
df <- data.frame(x=1:19, y=1)
colors <- c("#ffffff", "#ffffff", "#ffffff", "#ffffff", "#aaaaaa", "#555555", "#000000", "#000000", "#000000", "#000000", "#000000", "#000000", "#000000", "#555555", "#aaaaaa", "#ffffff", "#ffffff", "#ffffff", "#ffffff")
ggplot(df, aes(x=x, y=y, fill=x)) + geom_bar(stat='identity', width=1) +
 scale_color_manual(colors) + theme_minimal() + theme(legend.position='none')

但是,由于某种原因,这会以递增的顺序排列颜色,而不是按照我将它们放置在矢量中的顺序排列。 看这里:

在此处输入图片说明

有人知道为什么会这样吗?

@ilir的方法略有不同:

dat <- data.frame(x=factor(1:10), y=1)
gg <- ggplot(dat, aes(x=x, y=y, fill=x))
gg <- gg + geom_bar(stat='identity', width=1)
gg <- gg + scale_fill_manual(values=c("#646464", "#62cd64", "#b04664", "#396164", "#f6f664", "#f5a664", "#176b64", "#00ff64", "#1c0064", "#921964"))
gg <- gg + theme_minimal()
gg <- gg + theme(legend.position='none')
gg

在此处输入图片说明

您需要使用scale_fill_manualscale_color_manual 同样,以这种方式执行ggplot调用可以使以后更容易地调整代码。

根据您的新色带进行更新

dat <- data.frame(x=factor(1:19, y=1))
colors <- c("#ffffff", "#ffffff", "#ffffff", "#ffffff", "#aaaaaa", "#555555", 
            "#000000", "#000000", "#000000", "#000000", "#000000", "#000000",
            "#000000", "#555555", "#aaaaaa", "#ffffff", "#ffffff", "#ffffff",
            "#ffffff")
gg <- ggplot(dat, aes(x=x, y=y, fill=x))
gg <- gg + geom_bar(stat='identity', width=1)
gg <- gg + scale_fill_manual(values=colors)
gg <- gg + theme_minimal()
gg <- gg + theme(legend.position='none')
gg

在此处输入图片说明

您可以只使用虚拟数据和手动调色板创建一个小节图:

df <- data.frame(x=factor(1:10), y=1)
ggplot(df, aes(x=x, y=y, fill=x)) + geom_bar(stat='identity', width=1) + 
  scale_fill_manual(<your color vector here>) + 
  theme_minimal() + theme(legend.position='none')

您可以向theme添加更多选项,以取消显示轴和其余元素。

编辑:修复了在指定比例尺时的错误,并将x更改为@hrbmstr答案中建议的因数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM