r - ggplot2:热图中的平均行

标签 r ggplot2 heatmap

假设我使用函数 geom_raster() 创建了一个热图(来自 ggplot2)。

在表格底部添加一行显示(在我的情况下)所考虑期间每个月的“平均返回”是什么聪明的方法?

最好在 1985-2013 年期间与平均行之间留有一些空间,也许可以自定义警察颜色和“案件”。

我的代码核心如下(对象 molten 包含我的数据,原来是一个矩阵通过 melt()reshape2 函数。

hm <- ggplot(data = molten, aes(x = factor(Var2, levels = month.abb), y=Var1, fillll=value)) + geom_raster()
hm <- hm + scale_fill_gradient2(low=LtoM(100), mid=Mid, high=MtoH(100))
hm <- hm + labs(fill='% Return')
hm <- hm + geom_text(aes(label=paste(sprintf("%.1f %%", value))), size = 4)
hm <- hm + scale_y_continuous(breaks = 1985:2013)
hm <- hm + xlab(label = NULL) + ylab(label = NULL)
hm <- hm + theme_bw()
hm <- hm + theme(axis.text.x = element_text(size = 10, hjust = 0, vjust = 0.4, angle=90))

image

最佳答案

它不是很简洁,但我认为这应该可以满足您的需求。

你没有提供数据集,所以我只是编了一些。另外,LtoMMtoH函数不包含在我能找到的任何 R 包中,所以我做了一个快速的谷歌搜索并找到了它们 here

以下代码生成一个图 hm2用刻面在底部制作“平均返回”行:

require(reshape2)
require(ggplot2)

# Random data
set.seed(100)
casted = data.frame(Var1 = rep(1985:2013, times=12), Var2 = rep(month.abb, each=29), return = rnorm(12*29, 0, 9))
molten = melt(casted, id.vars = c("Var1", "Var2"))

LtoM <-colorRampPalette(c('red', 'yellow' ))
Mid <- "snow3"
MtoH <-colorRampPalette(c('lightgreen', 'darkgreen'))

# Averages
monthly.avg = cbind(Var1 = rep("Mean", 12), dcast(molten, Var2 ~ ., mean))
colnames(monthly.avg)[3] = "Mean"
molten2 = merge(molten, melt(monthly.avg), all.x = TRUE, all.y = TRUE)

# New plot
hm2 = 
  ggplot(data = molten2, aes(x = factor(Var2, levels = month.abb), y=Var1, fill=value)) +
  geom_raster() +
  scale_fill_gradient2(low=LtoM(100), mid=Mid, high=MtoH(100)) +
  labs(fill='% Return') +
  geom_text(aes(label=paste(sprintf("%.1f %%", value))), size = 4) +
  xlab(label = NULL) + ylab(label = NULL) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 10, hjust = 0, vjust = 0.4, angle=90)) +
  facet_grid(variable ~ ., scales = "free_y", space = "free_y") +    # grid layout
  theme(strip.background = element_rect(colour = 'NA', fill = 'NA'), strip.text.y = element_text(colour = 'white'))    # remove facet labels

这给出了以下情节:

Plot with Mean Row

关于r - ggplot2:热图中的平均行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099901/

相关文章:

javascript - 如何使用传单 map 创建带有数字的热图?

r - 回归线的热图

r - 给定一个经验概率密度函数,如何找到密度峰值处的值(以 R 为单位)?

r - 基于一个列模态和其他列的新列

r - 在 qplot 中按组对散点图着色

R 错误消息 - "arguments imply differing number of rows"

在 heatmap.2 中调整热图大小和调整

R:如何以仅取出一列中只有一个字符的行为条件对数据进行子集化

带有光栅包的randomForest分类的R问题

r - geom_smooth 中二项式公式的语法