我需要根据数据是增加还是减少来更改ggplot条形图中条形的颜色。基于数据增加/减少的条形颜色变化ggplot
我期待看到this question有一点帮助,但颜色继续默认ggplot的颜色,所以与我想要的和传说所说的相比,条形图显得很奇怪。
b<- data.frame(day=c('05/22','05/23','05/24','05/25','05/26','05/27','05/28','05/29','05/30','05/31','06/01','06/02','06/03','06/04','06/05','06/06','06/07','06/08','06/09','06/10','06/11','06/12','06/13','06/14','06/15','06/16','06/17','06/18','06/19','06/20','06/21','06/22','06/23','06/24','06/25'),temp.diff=c(10.1,8.7,11.4,11.4,11.6,10.7,9.6,11.0,10.0,10.7,9.5,10.3,8.4,9.0,10.3,11.3,12.7,14.5,12.5,13.2,16.5,19.1,14.6,14.0,15.3,13.0,10.1,8.4,4.6,4.3,4.7,2.7,1.6,1.8,1.9))
delta<- (sign(diff(b$temp.diff)) == 1) + 0
delta<-as.data.table(delta)
delta<-rbind(delta,data.frame(delta=0))
b$delta<-delta
l <- max(b$temp.diff)
q<- b[!is.na(b$delta) & b$delta == 1, 'color'] <- 'green'
w<- b[!is.na(b$delta) & b$delta == 0, 'color'] <- 'red'
r <- b[!is.na(b$temp.diff) & (b$temp.diff) == l, 'color'] <-'purple'
gg <- ggplot(b, aes(x=day, y=temp.diff, fill=color)) + geom_bar(stat='identity', position='identity')
gg1 <- gg + annotate ('line', ymin=-5)
gg2 <- gg + labs(x='Date', y='Mean Temp Diff')
gg
该图看起来像一条正态分布曲线。图表上的图例标题与酒吧颜色不匹配。我不明白为什么它这样做。上面的代码是朝着我的目标迈进的一步,但没有完全达到目的。 “Delta”用于确定所分析的温度是高于还是低于温度。如果它较低,'delta'会给它一个二进制'0',而如果它较高,'delta'会给它一个二进制'1'。我发现这个代码here。换句话说,如果在delta列中,行是'0,1,0',我不希望'1'改变颜色,因为它后面跟着'0',这意味着整体数据仍然是减少,反之亦然'1'。
我需要代码(即delta行'0'和'1'),并且图形上的条形颜色仅在下一个温度较高('0,1,1')或('1,0,0')低于它正在分析的那个,以便在不需要时保持随机的温度波动给我不同的颜色。在图表上,当温度上升时,会有一个随机的彩条,因为前一个彩条在技术上要低于被分析的彩条,因为此时它只是将它跟随它的单个温度进行比较。这种情况也发生在图表的下降侧 - 由于前面的温度高于被分析的温度,所以会出现随机的彩条。
我对r相当陌生,我无法弄清楚为了让图表变得干净,我需要做的下一步工作。如果有一种方法可以覆盖“0,1,0”,或将“1”更改为“0”以使颜色保持不变。提前致谢。
欢迎来到Stack Overflow!如果你想添加一个链接到你的文章中的图像,有更高代表的人可以来为你编辑:) – whrrgarbl
仅供参考,你不需要每次都保存你的剧情对象不同的名称(例如,gg,gg1,gg2等)。您可以使用相同的名称保存更新后的图,或者将所有语句链接在一起,就像我在回答中一样。 – eipi10