r - 如何使用ggplot2让x轴在非零位置截取y?

标签 r ggplot2

我有一张温度图:

qplot( TS, TEMPERATURE, data=dataInput(), geom="bar", stat="identity", fill=TEMPERATURE) + 
    labs(x="Measurement date", y="Temperature (degrees C)") +
    ggtitle("temperature")

但是,我想做的是让 x 轴在 50 摄氏度处与 y 轴相交,以便向下绘制 50 度以下的值。理想情况下使用渐变填充比例,以便高值是红色,低值是蓝色。

如何用 ggplot 做到这一点?

enter image description here

最佳答案

你只需要破解刻度标签。

library(ggplot2)

# fake data
my_dat <- data.frame(x=1:(24*3), temp=sample(0:100, 24*3))

# the initial plot 
ggplot(my_dat, aes(x=x, y=temp, fill=temp)) +
  geom_bar(stat='identity')

enter image description here

# make a copy
my_dat2 <- my_dat

# pretend that 50 is zero
my_dat2$temp  <- my_dat2$temp-50

ggplot(my_dat2, aes(x=x, y=temp, fill=temp)) +
  geom_bar(stat='identity') +
  scale_fill_gradient2(low = 'blue', mid = 'white', high='red',
                       labels=seq(0,100,25)) +
  scale_y_continuous(breaks=seq(-50,50,25), labels=seq(0,100,25))

enter image description here

编辑:交换颜色,低=蓝色和高=红色(!)

关于r - 如何使用ggplot2让x轴在非零位置截取y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793502/

相关文章:

r - 使用 ggplot 和 purrr 绘制多条逻辑曲线的推导图

r - 如何使用长标签保持ggplot的大小

r - 使用 rmarkdown 渲染时更改 R ggplot gganimate 的速度

r - 如何在 R 中的 PAM 中获取主成分数据

r - 使用 := in data. 表按组分配多列

r - Caret 包 - glmnet 变量重要性

r - 如何在r中的许多数据帧中的列上循环函数

r - 将 = 1 的值与一行中其他观测值的中值进行插补。 (右)

r - Shiny :由plotOutput()和/或renderPlot()添加的不需要的空间

r - 在 R 中将直方图与密度图相结合