使用R繪製三元相圖(Ternary plot)結合等高線圖(topographic map)
markdown
:::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)]
留言
張貼留言