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

How to control colors and breaks in heatmap using ggplot?

我正在尝试使用 ggplot2 包制作热图。 我无法控制热图上的颜色和中断。 我有 18 个问题,22 家公司和公司回答的平均值,从 1 到 5 分。

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

我也想固定轴上的顺序为"Question1, Question2...Question18"。 企业也是如此。目前我认为是 class "factor" 导致了这个问题。

> 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 Link 到我当前剧情的图片。

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

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

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

您编写的绘图代码现在将 return 如下图所示:

您可以使用 gradient scale, or add a manual scale.

进行精确的可视化

至于您的其他问题,重新排序该因子非常简单。改编自 R bloggers:

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