我正在尝试绘制一个分组的条形图,其中的x轴包含不同的状态,并且在每个状态下,我都具有冬季,春季,夏季,秋季的值。基本上,在x轴上,我有5个状态,每个阶段都是一簇条形,在每个簇中,我有4条形条,每个条形分别用于冬季,春季,夏季,秋季。
我想改变每个群集中4个变量的颜色,以使它们是相同颜色的不同阴影。假设我选择了蓝色,我希望冬天成为最深的蓝色阴影,而让秋天成为最浅的蓝色阴影。我还希望代码具有灵活性,以便每个集群中可以容纳4个以上的值。
这是我正在使用的代码
# fill = different categories within a group
# x = grouping vars
# y = value (height of bar)
xvar = rlang::sym('states') #grouping var
yvar = rlang::sym('pct_aware')
xlabel = ('state')
ylabel = ('% of respondents')
graphtitle = 'awareness by segmentation'
ylim_max = 100
withingroupvar = rlang::sym('seasons')
legendtitle = "seasons"
p <- ggplot(data = graphinput, aes(x = factor(!!xvar, levels = jobboards), y = !!yvar,
fill = factor(!!withingroupvar, levels =segorder_text)))
p + geom_bar(stat = "identity",
position = position_dodge(0.9)) +
labs(x = xlabel, y = ylabel) +
ggtitle(graphtitle) +
geom_text(aes(label=round(!!yvar,0)), vjust=-0.6, color="black",
position = position_dodge(0.9), size=4) +
scale_fill_manual(name = legendtitle,
values = c('winter'="pink", 'spring' = "aquamarine", 'summer' = "lightblue", 'fall' = "salmon1"),
breaks=segorder_text) +
theme(text = element_text(size = 15)) + ylim(0,ylim_max)
现在,我正在为4个季节中的每个季节手动分配颜色值。我希望这是自动的-我只需要选择基本颜色,R就可以为每个季节分配相同颜色的不同阴影。
我应该如何修改代码以实现此目的?
答案 0 :(得分:2)
我要定义一个调色板
login()
我将在scale_fill_manual中引用此调色板。
#define color palette
color_palette <- colorRampPalette(colors = c("steelblue", "darkblue"))(length(segorder_text));
然后您的代码应如下所示:
... scale_fill_manual(name = legendtitle, values = color_palette) + ...