---
# System prepended metadata

title: 使用R繪製三元相圖(Ternary plot)結合等高線圖(topographic map)
tags: [R]

---

---
disqus: ahb0222
GA : G-CQ4L16KHK4
---
# 使用R繪製三元相圖(Ternary plot)結合等高線圖(topographic map)
> [color=#40f1ef][name=LHB阿好伯, 11/22, 2019 ][:earth_africa:](https://www.facebook.com/LHB0222/)
###### tags: `R`

[TOC]


:::success
三元相圖是帶有三個變量的三角圖，它們通常用於化學，岩石學，礦物學，冶金學，材料科學等領域
**特色為其中任一點的三變量總合為100**
:::


![](https://i.imgur.com/CVGYPVQ.png)
                         
首先準備好所需的數據格式

![](https://i.imgur.com/6AsoV9t.png)

啟動Rstudio安裝所需的套件
``` R=
## Version 1.2.1335
## coding: utf-8 
## 繪製三元相圖(Ternary plot)結合等高線圖(topographic map)
# 安裝相關套件
install.packages("AlgDesign")
install.packages('ggtern')
install.packages('ggplot2')
install.packages('RColorBrewer')
#載入相關套件
library(AlgDesign)
library(ggplot2)
library(RColorBrewer)
library(ggtern)
```
讀取所準備好的CSV檔
```R=+
data_ggtern <- read.csv(file.choose()) #以視窗方式取得檔案位址
head(data_ggtern) #查看數據前6筆數據
## 有時候數據抬頭為中文名稱時讀取後會是亂碼
##可以利用colnames()重新命名
colnames(data_ggtern) <- c("A", "B", "C", "D")
```
執行程式碼繪製我們需要的三元相圖
```R=+
p <- ggtern(data = data_ggtern,
         aes(
           x = A,
           y = B,
           z = C,
           value = data_ggtern$D
         )) + theme_bw() +
  geom_interpolate_tern(
    data = data_ggtern,
    mapping = aes(value = data_ggtern$D, color = ..level..),
    method = lm,
    #等高線趨勢資料計算
    formula = expand.formula(value ~ cubicS(x, y) + quad(x, y)),
    base = "identity",
  ) +
  #添加資料點
  geom_point(size = 2, aes(color = data_ggtern$D)) +
  #設定顏色漸層
  scale_color_gradient(low = 'green', high = 'red') +
  labs(fill = "D")
p
```
![](https://i.imgur.com/Ek2CaUc.png)

**參考資料**
> [ggtern: ternary diagrams in R: What is ggtern?](http://www.ggtern.com/)
>>[Ternary Interpolation / Smoothing]([http://www.ggtern.com/2015/08/03/ternary-interpolation-smoothing/](http://www.ggtern.com/2015/08/03/ternary-interpolation-smoothing/))
>>> [name=Nicholas Hamilton]

>[ggtern contour plot in R - Stack Overflow](https://stackoverflow.com/questions/38160110/ggtern-contour-plot-in-r)

>[Plotting ternary diagrams with ggtern]([https://www.geo.fu-berlin.de/en/v/soga/Introduction-to-R/Plotting-Data/ternary-diagrams/index.html](https://www.geo.fu-berlin.de/en/v/soga/Introduction-to-R/Plotting-Data/ternary-diagrams/index.html))
>> [name=Hartmann, K., Krois, J., Waske, B. (2018)]







全文分享至

https://www.facebook.com/LHB0222/

有疑問想討論的都歡迎於下方留言

喜歡的幫我分享給所有的朋友 \o/

有所錯誤歡迎指教

![](https://i.imgur.com/47HlvGH.png)


