我正在尝试使用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链接到我当前情节的图片。
答案 0 :(得分:1)
问题的根源似乎是Value
是一个因素,而不是数字向量。我推断这是基于head()
输出NA
值写为<NA>
的事实,我假设它们是如何在原始电子表格中编写的,但不是默认行为R.您链接的图像是ggplot基于因子着色的默认行为;数字的默认颜色更接近你想要的颜色。
您可以使用class$mydf$Value
检查是否确实如此。如果确实是一个因素,请使用以下内容将其转换为数字:
mydf$Value <-as.numeric(as.character(mydf$Value))
您编写的绘图代码现在将返回如下图:
您可以使用gradient scale来使用确切的可视化,或添加manual scale。
至于你的另一个问题,重新排序这个因素非常简单。改编自R bloggers:
mydf$Question <- factor(mydf$Question, levels(mydf$Question)[c(1,10:18,2:9)])