我试图从插值点数据中编写R中的轮廓极坐标图.换句话说,我在极坐标中有数据,我想绘制一个幅度值并显示插值.我想批量生产类似于以下的图(在OriginPro中生成):

我在R中最接近这一点的尝试基本上是:
### Convert polar -> cart
# ToDo #
### Dummy data
x = rnorm(20)
y = rnorm(20)
z = rnorm(20)
### Interpolate
library(akima)
tmp = interp(x,y,z)
### Plot interpolation
library(fields)
image.plot(tmp)
### ToDo ###
#Turn off all axis
#Plot polar axis ontop
Run Code Online (Sandbox Code Playgroud)
产生的东西如下:

虽然这显然不是最终产品,但这是在R中创建等高极坐标图的最佳方法吗?
除了2008年的档案邮件列表,我找不到任何关于这个主题的内容.我想我并没有完全致力于将R用于图(尽管这是我拥有数据的地方),但我反对手动创建.所以,如果有另一种语言具有此功能,请建议它(我确实看到了Python示例).
关于使用ggplot2的建议 - 我似乎无法使用geom_tile例程在polar_coordinates中绘制插值数据.我在下面列出了代码,说明了我的位置.我可以用直角坐标和极坐标绘制原始图形,但我只能得到插值数据以笛卡尔坐标绘制.我可以使用geom_point绘制极坐标中的插值点,但我无法将该方法扩展到geom_tile.我唯一的猜测是这与数据顺序有关 - 即geom_tile期望排序/有序数据 - 我已经尝试过每次迭代我都可以想到将数据排序为升序/降序方位角和天顶而没有变化.
## Libs
library(akima)
library(ggplot2)
## Sample data in az/el(zenith)
tmp = seq(5,355,by=10)
geoms <- data.frame(az = tmp,
zen = runif(length(tmp)),
value …Run Code Online (Sandbox Code Playgroud) 我想在R中制作一个真正的热图,就像天气图一样,除了我的数据更简单.
考虑这个3d数据:
x <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
y <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
z <- rnorm(20)
Run Code Online (Sandbox Code Playgroud)
z将是颜色.
以下是此数据的离散外观热图:

如何制作热图以使颜色平滑,并且完整的2d空间基于z值填充平滑的颜色.
请包含示例代码,而不仅仅是一个可能会让我更加困惑的链接,而且我可能已经访问过该网站了.谢谢 :)
当我试验热图时,这是一个循环问题,可能有一个令人沮丧的明显答案......
我回答了一个关于使用和包绘制具有不同数据的热图的问题.它基本上允许非常不同的缩放x和y轴插入,并准备好用于绘图.fieldsggplot2akima
不幸的是,我无法找到一种方法来重新标记轴,以便它们返回原始值.我知道它将涉及使用breaks和labels参数,ggplot2但我一直无法产生任何错误.我们非常感谢两种绘图方案的解决方案......
为方便起见,这是我的代码使用ggplot2:
library("akima")
library("ggplot2")
x.orig <- rnorm(20, 4, 3)
y.orig <- rnorm(20, 5e-5, 1e-5)
x <- scale(x.orig)
y <- scale(y.orig)
z <- rnorm(20)
t. <- interp(x,y,z)
t.df <- data.frame(t.)
gt <- data.frame( expand.grid(x=t.$x,
y=t.$y),
z=c(t.$z),
value=cut(c(t.$z),
breaks=seq(min(z),max(z),0.25)))
p <- ggplot(gt) + geom_tile(aes(x,y,fill=value)) +
geom_contour(aes(x=x,y=y,z=z), colour="black")
# --------------------------------------------------------------
# Solution below prompted by X. He's answer:
get.labels <- function(break.points, orig.data, scaled.data, digits) {
labels …Run Code Online (Sandbox Code Playgroud)