【问题标题】:ggtern - fill/smooth area between values of triangulation pointsggtern - 三角测量点值之间的填充/平滑区域
【发布时间】:2021-09-15 11:07:05
【问题描述】:

我正在使用 ggtern 并想创建一个图,其中三角形的点之间的区域根据每个三角测量点的点值填充/平滑。像下面这样... target plot

但到目前为止我得到的是...... current state

下面是一些数据和代码示例。

感谢您的帮助!

a <- c(1.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.1, 0.1, 0.8, 0.0, 0.0, 0.2, 0.2, 0.8, 0.3, 0.7, 0.0, 0.0, 0.3, 0.7, 0.0, 0.4, 0.0, 0.6, 0.6, 0.4, 0.5, 0.0, 0.5, 0.1, 0.1, 0.8, 0.7, 0.1, 0.2, 0.1, 0.7,
    0.2, 0.6, 0.1, 0.1, 0.6, 0.3, 0.3, 0.1, 0.5, 0.1, 0.4, 0.5, 0.4, 0.6, 0.2, 0.2, 0.3, 0.5, 0.2, 0.5, 0.2, 0.3, 0.4, 0.4, 0.2, 0.3, 0.3, 0.4)
b <- c(0.0, 0.0, 1.0, 0.1, 0.9, 0.0, 0.1, 0.9, 0.0, 0.0, 0.8, 0.2, 0.8, 0.0, 0.2, 0.0, 0.3, 0.7, 0.3, 0.7, 0.0, 0.6, 0.0, 0.4, 0.0, 0.4, 0.6, 0.5, 0.5, 0.0, 0.1, 0.8, 0.1, 0.1, 0.2, 0.7, 0.7, 0.2,
     0.1, 0.1, 0.3, 0.6, 0.3, 0.6, 0.1, 0.4, 0.1, 0.5, 0.1, 0.4, 0.5, 0.2, 0.6, 0.2, 0.5, 0.3, 0.3, 0.2, 0.5, 0.2, 0.4, 0.2, 0.4, 0.4, 0.3, 0.3)
c <- c(0.0, 1.0, 0.0, 0.9, 0.1, 0.1, 0.0, 0.0, 0.9, 0.2, 0.2, 0.8, 0.0, 0.8, 0.0, 0.7, 0.0, 0.3, 0.7, 0.0, 0.3, 0.4, 0.6, 0.6, 0.4, 0.0, 0.0, 0.0, 0.5, 0.5, 0.8, 0.1, 0.1, 0.2, 0.7, 0.1, 0.2, 0.1,
     0.7, 0.3, 0.6, 0.3, 0.1, 0.1, 0.6, 0.5, 0.4, 0.4, 0.5, 0.1, 0.1, 0.2, 0.2, 0.6, 0.2, 0.2, 0.5, 0.3, 0.3, 0.5, 0.2, 0.4, 0.4, 0.3, 0.4, 0.3)
value <- c(1.433, 0.251, 0.000, 0.176, 0.000, 1.556, 1.490, 0.087, 0.522, 1.718, 0.000, 0.098, 0.347, 0.772, 1.642, 1.093, 1.762, 0.000, 0.052, 0.713, 1.857, 0.000, 1.367, 0.022, 1.814,
       1.726, 1.043, 1.424, 0.001, 1.722, 0.428, 0.122, 1.656, 1.798, 0.330, 0.384, 0.138, 1.777, 0.661, 1.763, 0.271, 0.166, 1.733, 0.753, 0.984, 0.236, 1.574, 0.204, 1.232, 1.471,
       1.086, 1.748, 0.409, 0.568, 0.790, 1.505, 0.520, 1.552, 0.451, 0.884, 1.094, 1.180, 0.484, 0.831, 0.859, 1.123)
df <- data.frame(a,b,c,value)

library(ggtern)
ggtern(df,aes(a, b, c)) +
geom_point(size=2, aes(color=value)) +
theme_rgbw()

【问题讨论】:

    标签: r ggplot2 ggtern


    【解决方案1】:

    应用ggtern 包文档中的示例,您可以试试这个。您可能必须尝试输入和参数以获得所需的结果,但这应该提供一个开始。 编辑了参数,现在更像是对不同填充区域和移除点以及网格顶部的 OP 请求。

    
    library(ggtern)
    ggtern(df, aes(a, b, c, value = value)) +
      stat_interpolate_tern(geom="polygon",
                            formula = value~y+x,
                            method = lm,
                            n = 100,
                            breaks = seq(0, 2.5, length.out = 8),
                            aes(fill = ..level..),
                            expand = 1) +
      scale_fill_gradient(low = "green", high = "red")+
      theme_rgbw()+
      theme(tern.panel.grid.ontop = TRUE)
    

    reprex package (v2.0.0) 于 2021-09-16 创建

    【讨论】:

    • 亲爱的彼得,感谢您的回答和建议!我在示例中寻找更多类似的方法,填充区域也可以被分割:-/是否有替代包然后 ggtern 可以解决问题?
    • 一种三元等高线图?
    • 非常感谢!至少这已经接近了。是否也可以将网格放在顶部?
    猜你喜欢
    • 2013-12-25
    • 2023-03-22
    • 2013-11-07
    • 2021-11-26
    • 1970-01-01
    • 2017-11-09
    • 2020-07-12
    • 2013-11-23
    • 1970-01-01
    相关资源
    最近更新 更多