如何在ggplot的纵坐标中绘制带有不规则数据的热图?

Ben

假设我要绘制以下数据:

# First set of X coordinates
x <- seq(0, 10, by = 0.2)
# Angles from 0 to 90 degrees
angles <- seq(0, 90, length.out = 10)
# Convert to radian
angles <- deg2rad(angles)
# Create an empty data frame
my.df <- data.frame()
# For each angle, populate the data frame
for (theta in angles) {
  y <- sin(x + theta)
  tmp <- data.frame(x = x, y = y, theta = as.factor(theta))
  my.df <- rbind(my.df, tmp)
}

x1 <- seq(0, 12, by = 0.3)
y1 <- sin(x1 - 0.5)
tmp <- data.frame(x = x1, y = y1, theta = as.factor(-0.5))
my.df <- rbind(my.df, tmp)

ggplot(my.df, aes(x, y, color = theta)) + geom_line()

这给了我一个不错的情节:

在此处输入图片说明

现在,我想从该数据集中绘制一个热图。有教程这里那里那些使用它geom_tile来做到这一点。

因此,让我们尝试:

# Convert the angle values from factors to numerics
my.df$theta <- as.numeric(levels(my.df$theta))[my.df$theta]
ggplot(my.df, aes(theta, x)) + geom_tile(aes(fill = y)) + scale_fill_gradient(low = "blue", high = "red")

太糟糕了

那是行不通的,原因是我的x坐标没有相同的步骤:

x <- seq(0, 10, by = 0.2)x1 <- seq(0, 12, by = 0.3)

但是,只要我使用相同的步骤x1 <- seq(0, 12, by = 0.2),它就会起作用:

然后!

在现实生活中,我的数据集不是规则排列的(这些是实验数据),但是我仍然需要将它们显示为热图。我能怎么做?

迈克尔·韦尔

您可以使用akima该函数将函数插值为适合热图图的形式。

library(akima)
library(ggplot2) 
my.df.interp <- interp(x = my.df$theta, y = my.df$x, z = my.df$y, nx = 30, ny = 30) 
my.df.interp.xyz <- as.data.frame(interp2xyz(my.df.interp))
names(my.df.interp.xyz) <- c("theta", "x", "y")

ggplot(my.df.interp.xyz, aes(x = theta, y = x, fill = y)) + geom_tile() + 
scale_fill_gradient(low = "blue", high = "red")

在此处输入图片说明

如果您希望使用其他分辨率,则可以将nxny参数更改interp

使用just的另一种方法ggplot2是使用stat_summary_2d

library(ggplot2)
ggplot(my.df, aes(x = theta, y = x, z = y)) + stat_summary_2d(binwidth = 0.3) + 
scale_fill_gradient(low = "blue", high = "red")

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在软体投影上绘制坐标的热图

如何在xarray中绘制不规则的纬度和经度?

如何设置带有不规则条形图的Hightcharts柱形图

如何在R中增加不规则的时间序列数据

在ggplot中绘制梯度热图圆

如何在python中绘制函数作为热图?

如何使用极坐标在ggplot中绘制雷达图?

如何在 R 中标记带有不规则错误符号的规则时间序列?

ggplot如何在带有州ID的美国地图上绘制饼图

如何从3列数据框中绘制数据作为R中的热图图?

当数据不规则时,如何在LibreOffice Calc中使图表具有规则的时间间隔?

带有JSON数据的HighChart热图

如何在ggplot中绘制具有特定坐标的线?

如何在R中制作地理数据热图?

如何在ggplot中绘制堆叠条形图以获取数据类型列表?

如何在R中将数据框绘制为热图/网格?

Python中带有不规则列的嵌套列表操作

如何在带有警告的for循环中绘制多个图?

如何在seaborn中绘制带有'hue'参数的联合图

如何在python中使用matplotlib在python中绘制带有标签的简单条形图?

Vega-Lite-如何在每个nar中绘制带有标签的堆叠条形图?

绘制数据帧的热图

根据不规则数据绘制表面

如何在python中合并两个不规则数据帧

如何在Excel 2010中汇总不规则数据范围?

如何禁用 Highcharts 纵坐标中的“k”显示?

如何在ggplot中绘制多面饼图

如何在ggplot2或R中绘制雷达图

如何在ggplot中绘制部分表格的条形图