R GGplot scale_fill_manual()意外行为

R GGplot scale_fill_manual()意外行为,r,ggplot2,colors,R,Ggplot2,Colors,编辑* 假设我因为不可复制而被否决了,这很公平,尽管这些数据集通常是复杂/敏感的数据集,我希望保持谨慎 也就是说,我通过在GGplot中设置fill=call的因子级别解决了这个问题。仍然不能100%确定为什么会这样,即这是如何影响颜色顺序的,我们将进行一些研究并找出答案 使用比例填充手动在条形图中手动设置颜色存在问题 因此,我将一个颜色列表输入到一个条形图程序中,该程序从代码框中提取数据,即名称列表的分数,在列表的顶部和底部附加分数,即平均值和基准值,然后根据名称的数量将颜色设置为彩虹光谱,并

编辑* 假设我因为不可复制而被否决了,这很公平,尽管这些数据集通常是复杂/敏感的数据集,我希望保持谨慎

也就是说,我通过在GGplot中设置fill=call的因子级别解决了这个问题。仍然不能100%确定为什么会这样,即这是如何影响颜色顺序的,我们将进行一些研究并找出答案

使用比例填充手动在条形图中手动设置颜色存在问题

因此,我将一个颜色列表输入到一个条形图程序中,该程序从代码框中提取数据,即名称列表的分数,在列表的顶部和底部附加分数,即平均值和基准值,然后根据名称的数量将颜色设置为彩虹光谱,并为顶部和底部的条平均值和基准蓝色和金色设置颜色

我的问题是,不知怎么的,颜色有点乱

plotdata <- subset(groupdata,scale.code==(k)&year!=prior.year) #select data for the given scale
#create the plot for the scale
curr.plot <- ggplot(plotdata, aes(x = FBMA_ID, y = Plot.score, fill=FBMA_ID))+ 
  geom_bar(width=0.7, stat="identity") +  
  theme(legend.position="none") +
  coord_flip() +
  scale_x_discrete(limits = rev(unique(plotdata$FBMA_ID)))+
  scale_y_continuous(limit = MMlimits, oob=squish, minor_breaks = value.breaks.minor, 
                     breaks = value.breaks.major, labels = value.labels, expand = c(0,0)) +
  scale_fill_manual(values=rev(temp.col))+
虽然绘图输出如下所示

第一个和最后一个颜色现在是第二个和第二个

我可能错过了一个耀眼的、漫长的一天

如果需要,我可以进行dput

干杯,
Alex

根据以下内容设置绘图数据框中的系数级别解决了此问题。感谢Roman Luštrik的指导和贡献

ggplot(plotdata, aes(x = FBMA_ID, y = Plot.score, fill=factor(plotdata$FBMA_ID, levels = names))

FBMA_ID的因子级别顺序是什么?它没有被设置为因子,这样就解决了这个问题,谢谢!为什么因子级别会影响scale\u fill\u手动调用中的颜色顺序?Yo现在可能已经猜到了,因子级别的顺序决定了离散值的顺序。秩序必须来自某个地方,而因素水平就是它。
ggplot(plotdata, aes(x = FBMA_ID, y = Plot.score, fill=factor(plotdata$FBMA_ID, levels = names))