两个不同的热图,ggplot2,Rstudio 具有相同的热图例
Have same heat legend for two different heatmap plots, ggplot2, Rstudio
问题摘要和信息
我有两个大数据集(如 matrix-layout,但保持 df-s),有 100 列和 11640 行。每行代表每小时的时间,每列代表特定的深度。对于两个数据集(名为 UCCO2 和 RCCO2),时间相同但深度不同(即不同的特定深度)。 UCCO2 的范围是 0 到 12,对于 RCCO2,它是 0 到 ~30
请帮我为他们俩创造一个传奇。我只设法创建具有不同图例的图(注意:我将它们分开 windows)
呈现数据集
以下是 melt() 命令后的数据摘要。我在 commad melt() 之后再次添加了日期 (date_dates),并且是此处看到的最后一列。
后面的剧情中:
x-axis为:"date_dates" -->每小时测量时间
y-axis是:"variable"-->这是深度
从下面的代码中可以看出,Fill 是值列。
数据集名称:UCCO2_m & RCCO2_m
summary(UCCO2_m)
DATE variable value
2014-10-26 02:00:00: 200 124 : 11640 Min. : 1.2
2014-06-14 00:00:00: 100 123 : 11640 1st Qu.: 6.8
2014-06-14 01:00:00: 100 121 : 11640 Median : 8.4
2014-06-14 02:00:00: 100 120 : 11640 Mean : 8.1
2014-06-14 03:00:00: 100 119 : 11640 3rd Qu.: 9.6
2014-06-14 04:00:00: 100 118 : 11640 Max. :12.1
(Other) :1163300 (Other):1094160 NA's :657399
date_dates
Min. :2014-06-14 00:00:00
1st Qu.:2014-10-13 05:45:00
Median :2015-02-11 10:30:00
Mean :2015-02-11 10:29:59
3rd Qu.:2015-06-12 17:15:00
Max. :2015-10-11 23:00:00
> summary(RCCO2_m)
DATE variable value
2014-10-26 02:00:00: 200 60 : 11640 Min. : 1.14
2014-06-14 00:00:00: 100 59 : 11640 1st Qu.:10.82
2014-06-14 01:00:00: 100 59.1 : 11640 Median :14.51
2014-06-14 02:00:00: 100 58 : 11640 Mean :13.98
2014-06-14 03:00:00: 100 58.1 : 11640 3rd Qu.:17.37
2014-06-14 04:00:00: 100 57 : 11640 Max. :27.64
(Other) :1163300 (Other):1094160 NA's :221208
date_dates
Min. :2014-06-14 00:00:00
1st Qu.:2014-10-13 05:45:00
Median :2015-02-11 10:30:00
Mean :2015-02-11 10:29:59
3rd Qu.:2015-06-12 17:15:00
Max. :2015-10-11 23:00:00
df-s 的样子
命令前矩阵的示例 "melt()"
df 融化前,行:11640,列:100 如果不包括日期列(请注意,在 R 中日期只有一列
df 的一个例子 AFTER melt()
df之后,其中DATE
作为熔化的因子,variable
是深度(列名),value
是当时的值和深度, date_dates
是我在后面添加的列,用作 x-axis
方法 - Rcode
代码说明:
我正在使用 ggplot2 创建热图。在 melt 和我添加另一个日期列的步骤之后(用于 x-axis 值(不知道这是否有必要,否则 x-axis 值看起来很奇怪))。然后我应用 ggplot 和几个额外的命令来让它更整洁:
colours=rev(c("black","red","yellow","green","blue", "blue2")) # Colour scheme for plot
p <- ggplot(UCCO2_m, aes(date_dates, variable)) +
geom_tile(aes(fill = UCCO2_m$value)) +
scale_fill_gradientn(guide = "colourbar",
colours = colours,
na.value = "white",
expression(Carbon-Concentration[mg/l]))
# Add some titles and stuff
p <- p + labs(title = "Carbon Concentration below Watertable at the Upslope Station", x = "Month - Year", y = "Depth (cm)")
#axis.text.x for x axis only
p<-p + theme(axis.line=element_blank(),
axis.text.x= element_text(angle=45, vjust=0.5),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.border=element_blank(),
plot.background=element_blank())
#Fix axis
p <- p + scale_x_datetime(breaks = date_breaks("months"), labels = date_format("%b"))
windows()
plot(p)`
我的成绩
这就是我的绘图的外观,正如任何人所见,配色方案代表两个绘图中的不同值:
第二个问题只是一个 "bracket" 问题,如果有人知道一个快速的答案
(另请注意,我的 y-axis 非常丑陋!如果有人知道一种简单的方法来显示每秒的值,我也将非常感激,但我知道这可能是另一个问题。现在使用的 y-axis 值是因子,我试图将它们更改为 integer/values 但是在图中到处都出现奇怪的水平灰色条)
您可以明确设置比例尺的数据范围,例如:
... + scale_fill_gradientn(...,limits=range(UCCO2_m$value,RCCO2_m$value)) + ...
问题摘要和信息
我有两个大数据集(如 matrix-layout,但保持 df-s),有 100 列和 11640 行。每行代表每小时的时间,每列代表特定的深度。对于两个数据集(名为 UCCO2 和 RCCO2),时间相同但深度不同(即不同的特定深度)。 UCCO2 的范围是 0 到 12,对于 RCCO2,它是 0 到 ~30 请帮我为他们俩创造一个传奇。我只设法创建具有不同图例的图(注意:我将它们分开 windows)
呈现数据集
以下是 melt() 命令后的数据摘要。我在 commad melt() 之后再次添加了日期 (date_dates),并且是此处看到的最后一列。
后面的剧情中: x-axis为:"date_dates" -->每小时测量时间
y-axis是:"variable"-->这是深度 从下面的代码中可以看出,Fill 是值列。
数据集名称:UCCO2_m & RCCO2_m
summary(UCCO2_m)
DATE variable value
2014-10-26 02:00:00: 200 124 : 11640 Min. : 1.2
2014-06-14 00:00:00: 100 123 : 11640 1st Qu.: 6.8
2014-06-14 01:00:00: 100 121 : 11640 Median : 8.4
2014-06-14 02:00:00: 100 120 : 11640 Mean : 8.1
2014-06-14 03:00:00: 100 119 : 11640 3rd Qu.: 9.6
2014-06-14 04:00:00: 100 118 : 11640 Max. :12.1
(Other) :1163300 (Other):1094160 NA's :657399
date_dates
Min. :2014-06-14 00:00:00
1st Qu.:2014-10-13 05:45:00
Median :2015-02-11 10:30:00
Mean :2015-02-11 10:29:59
3rd Qu.:2015-06-12 17:15:00
Max. :2015-10-11 23:00:00
> summary(RCCO2_m)
DATE variable value
2014-10-26 02:00:00: 200 60 : 11640 Min. : 1.14
2014-06-14 00:00:00: 100 59 : 11640 1st Qu.:10.82
2014-06-14 01:00:00: 100 59.1 : 11640 Median :14.51
2014-06-14 02:00:00: 100 58 : 11640 Mean :13.98
2014-06-14 03:00:00: 100 58.1 : 11640 3rd Qu.:17.37
2014-06-14 04:00:00: 100 57 : 11640 Max. :27.64
(Other) :1163300 (Other):1094160 NA's :221208
date_dates
Min. :2014-06-14 00:00:00
1st Qu.:2014-10-13 05:45:00
Median :2015-02-11 10:30:00
Mean :2015-02-11 10:29:59
3rd Qu.:2015-06-12 17:15:00
Max. :2015-10-11 23:00:00
df-s 的样子
命令前矩阵的示例 "melt()"
df 的一个例子 AFTER melt()
DATE
作为熔化的因子,variable
是深度(列名),value
是当时的值和深度, date_dates
是我在后面添加的列,用作 x-axis
方法 - Rcode
代码说明: 我正在使用 ggplot2 创建热图。在 melt 和我添加另一个日期列的步骤之后(用于 x-axis 值(不知道这是否有必要,否则 x-axis 值看起来很奇怪))。然后我应用 ggplot 和几个额外的命令来让它更整洁:
colours=rev(c("black","red","yellow","green","blue", "blue2")) # Colour scheme for plot
p <- ggplot(UCCO2_m, aes(date_dates, variable)) +
geom_tile(aes(fill = UCCO2_m$value)) +
scale_fill_gradientn(guide = "colourbar",
colours = colours,
na.value = "white",
expression(Carbon-Concentration[mg/l]))
# Add some titles and stuff
p <- p + labs(title = "Carbon Concentration below Watertable at the Upslope Station", x = "Month - Year", y = "Depth (cm)")
#axis.text.x for x axis only
p<-p + theme(axis.line=element_blank(),
axis.text.x= element_text(angle=45, vjust=0.5),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.border=element_blank(),
plot.background=element_blank())
#Fix axis
p <- p + scale_x_datetime(breaks = date_breaks("months"), labels = date_format("%b"))
windows()
plot(p)`
我的成绩
这就是我的绘图的外观,正如任何人所见,配色方案代表两个绘图中的不同值:
第二个问题只是一个 "bracket" 问题,如果有人知道一个快速的答案
(另请注意,我的 y-axis 非常丑陋!如果有人知道一种简单的方法来显示每秒的值,我也将非常感激,但我知道这可能是另一个问题。现在使用的 y-axis 值是因子,我试图将它们更改为 integer/values 但是在图中到处都出现奇怪的水平灰色条)
您可以明确设置比例尺的数据范围,例如:
... + scale_fill_gradientn(...,limits=range(UCCO2_m$value,RCCO2_m$value)) + ...