ggplot - 如何创建计算和显示比率的热图?

时间:2018-01-31 02:46:59

标签: r ggplot2 dplyr

我正在尝试使用ggplot创建一个热图,其中fill表示某些比率的大小。我目前有一张表如下:

 company survey  type        value
* <chr>   <chr>   <chr>       <dbl>
1 Raps    S1_2014 Revenue 282576375
2 Raps    S2_2014 Revenue 654413143
3 Raps    S3_2014 Revenue 365753902

我的ggplot代码是:

ggplot(df1, aes(x=survey, y=survey)) +
   geom_tile(aes(fill=value/value))

结果图如下所示: My heatmap

如您所见,图表中有空白,调查不会与他们自己互动(即S1_2014和S3_2014)。我可以将这些交叉点编码到我的ggplot调用中吗?或者我需要纠缠数据吗?如果我确实需要争吵,我该怎么做呢?

感谢。

1 个答案:

答案 0 :(得分:2)

是 - ggplot只会绘制您提供的数据。我真的很惊讶value / value给你除1以外的任何东西。你可以交叉加入你的数据,然后绘制:

dd = merge(df1[c(2, 4)], df1[c(2, 4)], all = T, by = NULL)

ggplot(dd, aes(survey.x, survey.y, fill = value.x / value.y)) + 
  geom_tile()

enter image description here

这样你也可以控制(并告诉)比率的方式。

将此作为输入:

df1 = read.table(text = "company survey  type        value
1 Raps    S1_2014 Revenue 282576375
2 Raps    S2_2014 Revenue 654413143
3 Raps    S3_2014 Revenue 365753902", header = T)