如何繪制輪廓?
我有 x,y,z。我希望使用 V 值繪制等高線。
# data
tbl <- tibble(x = runif(n = 1000, min = 0, max = 1),
y = runif(n = 1000, min = 0, max = 1),
V = x^2.5 y^2)
# plots
ggplot(data = tbl,
aes(x = x,
y = y
z = V))
geom_contour_filled(alpha = 0.8, breaks = seq(0, 2, 0.2))
theme_bw()
uj5u.com熱心網友回復:
這是一種方法,可以通過無恥地復制和粘貼franke檔案中的示例來解決問題geom_contour_filled。
訣竅是使用包interp來準備繪圖資料。在下面的代碼中,創建指令的唯一變化grid是被分箱的資料集。
suppressPackageStartupMessages({
library(tidyverse)
library(interp)
})
set.seed(2022)
tbl <- tibble(x = runif(n = 1000, min = 0, max = 1),
y = runif(n = 1000, min = 0, max = 1),
V = x^2.5 y^2)
grid <- with(tbl, interp::interp(x, y, V))
griddf <- subset(data.frame(x = rep(grid$x, nrow(grid$z)),
y = rep(grid$y, each = ncol(grid$z)),
z = as.numeric(grid$z)),
!is.na(z))
# plots
ggplot(data = griddf,
aes(x = x,
y = y,
z = z))
stat_contour_filled(alpha = 0.8, breaks = seq(0, 2, 0.2))
theme_bw()

由reprex 包于 2022-05-18 創建(v2.0.1)
編輯
為了更好地控制垃圾箱,請使用引數bins或引數binwidth而不是breaks. 以下代碼的 bin 寬度為0.1,bin 的數量增加了一倍,現在使用geom_contour_filled,就像在問題中一樣。
ggplot(data = griddf,
aes(x = x,
y = y,
z = z))
geom_contour_filled(alpha = 0.8, binwidth = 0.1, show.legend = FALSE)
theme_bw()

由reprex 包于 2022-05-18 創建(v2.0.1)
uj5u.com熱心網友回復:
geom_contour_filled需要分箱資料。
所以你的資料應該是
# data
tbl <- tibble(x = rep(seq(0,1,length.out=100),100),
y = rep(seq(0,1,length.out=100),each=100),
V = x^2.5 y^2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/477215.html
上一篇:使用ggplot2在3個子圖中繪制時間序列資料的原始值、mom和yoy變化
下一篇:使用特定調色板為ggplot著色
