3变量绘制热图ggplot2
3-variables plotting heatmap ggplot2
我目前正在开发一个非常简单的 data.frame
,包含三列:
x
包含一组点的 x 坐标,
y
包含点集的 y 坐标,并且
weight
包含与每个点关联的值;
现在,在 ggplot2
工作,我似乎能够绘制这些数据的等高线水平,但我无法找到一种方法来根据变量 weight
填充绘图.这是我使用的代码:
ggplot(df, aes(x,y, fill=weight)) +
geom_density_2d() +
coord_fixed(ratio = 1)
遗憾的是,你可以看到没有任何填充物。
已经试了三天了,开始郁闷了
在常规 ggplot
调用中指定 fill=weight
and/or color = weight
,没有结果。我试过使用不同的几何图形(瓦片、光栅、多边形……),仍然没有。试图将 aes
直接指定到 geom 层中,也没有用。
试图将对象转换为 ppp,但 ggplot
无法处理它们,而且使用 base-R 绘图也不起作用。老实说,我不知道出了什么问题!
我附上了前 10 个点的数据,这些数据分布在不规则的网格上:
x = c(-0.13397460,-0.31698730,-0.13397460,0.13397460,-0.28867513,-0.13397460,-0.31698730,-0.13397460,-0.28867513,-0.26794919)
y = c(-0.5000000,-0.6830127,-0.5000000,-0.2320508,-0.6547005,-0.5000000,-0.6830127,-0.5000000,-0.6547005,0.0000000)
weight = c(4.799250e-01,5.500250e-01,4.799250e-01,-2.130287e+12,5.798250e-01,4.799250e-01,5.500250e-01,4.799250e-01,5.798250e-01,6.618956e-01)
有什么建议吗?所需的输出将是以下几行:
提前谢谢你。
根据你的描述geom_density
听起来不对。
你可以试试 geom_raster
:
ggplot(df, aes(x,y, fill = weight)) +
geom_raster() +
coord_fixed(ratio = 1) +
scale_fill_gradientn(colours = rev(rainbow(7)) # colourmap
这是第二好的使用 fill=..level..
。 .
# load libraries
library(ggplot2)
library(RColorBrewer)
library(ggthemes)
# build your data.frame
df <- data.frame(x=x, y=y, weight=weight)
# build color Palette
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")), space="Lab")
# Plot
ggplot(df, aes(x,y, fill=..level..) ) +
stat_density_2d( bins=11, geom = "polygon") +
scale_fill_gradientn(colours = myPalette(11)) +
theme_minimal() +
coord_fixed(ratio = 1)
我目前正在开发一个非常简单的 data.frame
,包含三列:
x
包含一组点的 x 坐标,
y
包含点集的 y 坐标,并且
weight
包含与每个点关联的值;
现在,在 ggplot2
工作,我似乎能够绘制这些数据的等高线水平,但我无法找到一种方法来根据变量 weight
填充绘图.这是我使用的代码:
ggplot(df, aes(x,y, fill=weight)) +
geom_density_2d() +
coord_fixed(ratio = 1)
遗憾的是,你可以看到没有任何填充物。 已经试了三天了,开始郁闷了
在常规 ggplot
调用中指定 fill=weight
and/or color = weight
,没有结果。我试过使用不同的几何图形(瓦片、光栅、多边形……),仍然没有。试图将 aes
直接指定到 geom 层中,也没有用。
试图将对象转换为 ppp,但 ggplot
无法处理它们,而且使用 base-R 绘图也不起作用。老实说,我不知道出了什么问题!
我附上了前 10 个点的数据,这些数据分布在不规则的网格上:
x = c(-0.13397460,-0.31698730,-0.13397460,0.13397460,-0.28867513,-0.13397460,-0.31698730,-0.13397460,-0.28867513,-0.26794919)
y = c(-0.5000000,-0.6830127,-0.5000000,-0.2320508,-0.6547005,-0.5000000,-0.6830127,-0.5000000,-0.6547005,0.0000000)
weight = c(4.799250e-01,5.500250e-01,4.799250e-01,-2.130287e+12,5.798250e-01,4.799250e-01,5.500250e-01,4.799250e-01,5.798250e-01,6.618956e-01)
有什么建议吗?所需的输出将是以下几行:
提前谢谢你。
根据你的描述geom_density
听起来不对。
你可以试试 geom_raster
:
ggplot(df, aes(x,y, fill = weight)) +
geom_raster() +
coord_fixed(ratio = 1) +
scale_fill_gradientn(colours = rev(rainbow(7)) # colourmap
这是第二好的使用 fill=..level..
。
# load libraries
library(ggplot2)
library(RColorBrewer)
library(ggthemes)
# build your data.frame
df <- data.frame(x=x, y=y, weight=weight)
# build color Palette
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")), space="Lab")
# Plot
ggplot(df, aes(x,y, fill=..level..) ) +
stat_density_2d( bins=11, geom = "polygon") +
scale_fill_gradientn(colours = myPalette(11)) +
theme_minimal() +
coord_fixed(ratio = 1)