是“尺寸点式”热图。可能在ggplot2? [英] Is a heatmap in "sized dot style" possible in ggplot2?

查看:120
本文介绍了是“尺寸点式”热图。可能在ggplot2?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能用ggplot2中的圆而不是方形绘制热图?不仅可以用颜色渐变表示值,而且可以用圆的大小表示值。
我正在考虑像这样的图表点热图圆的大小也是由它们的具体值交替出现的。我已经用ggplot2读了自己的热映像,但找不到解决方案。对于热映射,我把发布在learnr.wordpress.com上的示例交给:

Is it possible to draw a heatmap with circles instead of square in ggplot2? It would be neat to not only represent the values by a color gradient but also by the circle size. I am thinking of a graph like this dot heatmap where also the circle sizes are alternated by their specific value. I already read myself into heatmapping with ggplot2 but couldn't find a solution. For heatmapping I alternated the example posted on learnr.wordpress.com to:

 library(ggplot2)
 library(plyr)
 library(reshape2)
 library(scales)
 kreuz <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
 kreuz.m <- melt(kreuz)
 (p <- ggplot(kreuz.m, aes(Name, variable)) +
   geom_tile(aes(fill = value), colour = "white") +
   scale_fill_gradient2(breaks=waiver(), name="binding strength", 
      low ="white", mid= ("lightblue"), high = "steelblue", midpoint = 4))
 base_size <- 10
 p + theme_grey(base_size = base_size) +
   theme(panel.grid.major = element_blank())+
   labs(x = "Patient ID", y = "Phage Motives", title = "Cross Reactivity")+
   scale_x_discrete(expand = c(0, 0)) +
   scale_y_discrete(expand = c(0, 0)) +
   theme(legend.position = "right", axis.ticks = element_blank(), 
      axis.text.x = element_text(size = base_size *0.8, angle = 270, hjust = 0,
      colour = "grey50"))+
   labs(x = "Patient ID", y = "Phagemotives", title = "cross reactivity")

推荐答案

在此示例中,大小和颜色都与变量值相对应,因为它是kreuz.m数据集中唯一可用的变量数值。

In this example size and colour both correspond with the variable value because it's the only variable numeric available in the kreuz.m dataset.

ggplot(kreuz.m, aes(Name, variable)) +
  geom_point(aes(size = value, colour=value))

这篇关于是“尺寸点式”热图。可能在ggplot2?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆