如何使用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)])
我正在尝试使用 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)])