如何使用ggplot控制热图中的颜色和中断?

时间:2015-03-17 19:53:49

标签: r ggplot2 heatmap

我正在尝试使用ggplot2包制作热图。 我无法控制热图上的颜色和断裂。 我有18个问题,22个公司和公司的平均值在1到5的范围内。

假设我想要对值(0-1)(1-2)(2-3)(3-4)(4-5)进行颜色编码。可以使用不同的颜色(蓝色,绿色,红色,黄色,紫色)或渐变比例。并且NA值=黑色。 简短:我如何选择颜色和休息?

我还想将轴上的顺序修改为“Question1,Question2 ... Question18”。 同样对于公司。在这一刻,我认为这是导致这个问题的阶级“因素”。

> head(mydf, 20)
   Firm   Question             Value
1     1  Question1   3.6675482217047
2     1  Question2  3.74327628361858
3     1  Question3              <NA>
4     1  Question4              <NA>
5     1  Question5              <NA>
6     1  Question6              <NA>
7     1  Question7 0.352078239608802
8     1  Question8  3.04180471049169
9     1  Question9   3.9559090659924
10    1 Question10              <NA>
11    1 Question11                 1
12    1 Question12  4.26591296778731
13    1 Question13  3.95256943635996
14    1 Question14 0.465686274509804
15    1 Question15  2.61764705882353
16    1 Question16  1.83333333333333
17    1 Question17              <NA>
18    1 Question18 0.225490196078431
19    2  Question1  3.85714285714286
20    2  Question2                 4

> ggplot(mydf, aes(Question, Firm, fill=Value)) + geom_tile() + theme(axis.text.x = element_text(angle=330, hjust=0)) 

http://imgur.com/iM1aLXG链接到我当前情节的图片。

1 个答案:

答案 0 :(得分:1)

问题的根源似乎是Value是一个因素,而不是数字向量。我推断这是基于head()输出NA值写为<NA>的事实,我假设它们是如何在原始电子表格中编写的,但不是默认行为R.您链接的图像是ggplot基于因子着色的默认行为;数字的默认颜色更接近你想要的颜色。

您可以使用class$mydf$Value检查是否确实如此。如果确实是一个因素,请使用以下内容将其转换为数字:

mydf$Value <-as.numeric(as.character(mydf$Value))

您编写的绘图代码现在将返回如下图:enter image description here

您可以使用gradient scale来使用确切的可视化,或添加manual scale

至于你的另一个问题,重新排序这个因素非常简单。改编自R bloggers

mydf$Question <- factor(mydf$Question, levels(mydf$Question)[c(1,10:18,2:9)])