我有一个数据文件data file,其中包含足够的数据点,可以在三角图中绘制“热力图”(实际上不是真正的热力图,只是具有足够数据点的散点图)。
library(ggtern)
library(reshape2)
N=90
trans.prob = as.matrix(read.table("./N90_p_0.350_eta_90_W12.dat",fill=TRUE))
colnames(trans.prob) = NULL
# flatten trans.prob for ternary plot
flattened.tb = melt(trans.prob,varnames = c("x","y"),value.name = "W12")
# delete rows with NA
flattened.tb = flattened.tb[complete.cases(flattened.tb),]
flattened.tb$x = (flattened.tb$x-1)/N
flattened.tb$y = (flattened.tb$y-1)/N
flattened.tb$z = 1 - flattened.tb$x - flattened.tb$y
ggtern(data = flattened.tb, aes(x=x,y=y,z=z)) +
geom_point(size=1, aes(color=W12)) +
theme_bw() +
scale_color_gradient2(low = "green", mid = "yellow", high = "red")
以下是我得到的内容:
我想使用ggtern
得到如下所示的图形:
我的问题是:我该如何使用ggtern
得到类似第二个图形的东西?
编辑1:文件名中有错别字,非常抱歉。我已经更正了文件名。数据文件包含太多数据点,无法直接在此处粘贴。
第二个图形是由第三方Matlab软件包ternplot
生成的。我想要一个具有离散线条而不是热力图的三元等高线图。更具体地说,我想指定一系列等高线,例如W12=0.05,0.1,0.15,...
。我已经尝试了geom_density_tern
和geom_interpolate_tern
几个小时,但仍然不知道如何得到我想要的结果。
Matlab代码如下:
[HCl, Hha, cax] = terncontour(X,Y,1-X-Y,data,[0.01,0.1,0.2,0.3,0.4,0.5]);
其中X,Y,1-X-Y
指定了图表上的坐标,data
存储数值,向量指定等高线的值。
dput
格式,如果太长可以提供数据在 GitHub 或 PasteBin 上的链接,或者更好的方法是使用内置于您的软件包中的示例数据或数据集(data()
)。 - Hack-R