有沒有人知道你是如何應用這個的
?set.seed(101)
x <- 1:10
y <- rnorm(10)
##第二個資料集的規模非常不同
z < - runif(10。 min=1000。 max=10000)
par(mar = c(5。 4, 4。 4) 0。 3) #為z軸留出空間 0.
plot(x, y) # first plot.
par(new = TRUE)
plot(x,z, type = "l"。 axes = FALSE。 bty = "n", xlab = ""。 ylab = "")
軸(side=4。 在= pretty(range(z)))
mtext("z", side=4。 行=3)。
但是使用ggplot。
在ggplot中,你只能使用y軸的轉換來創建sec.axis()或dup.axis()。那么,一個全新的獨立y軸將只適用于z變數,而簡單的y軸將適用于y變數。
uj5u.com熱心網友回復:
ggplot2::sec_axis只提供了一種提供第二軸的機制,并且花了很大的說服力才將其納入代碼庫。你要負責想出轉換的方法。這種轉換必須是某種線性的,所以如果任何一個軸需要是非線性的(例如,指數、對數等),那么你的專業數學技能就會受到考驗。
如果你能使用尺度,那么這個程序就變得微不足道:
dat <- data. frame(x, y, z)
ggplot(dat, aes(x, y))
geom_point()
geom_line()
aes(y = zmod),
資料 = ~ transform(. , zmod = scales: 。 rescale(z, range(y)。 范圍(z))
)
scale_y_continuous()
sec.axis = sec_axis(~ scales::rescale(. , range(dat$z)。 range(dat$y))。
突破 = c(2000。 4000。 6000,8000))
)
除非我錯過了什么(我剛剛檢查了ggplot2-3.3.5的NEWS.md檔案),否則這一點沒有改變。
uj5u.com熱心網友回復:
由于z和y之間沒有完美的相關性,你不能使用一個輔助軸,但你可以將它們歸一化并繪制兩個幾何圖形:
library(tidyverse)
set.seed(101)
x <- 1:10
y <- rnorm(10)
##第二個資料集的規模非常不同
z < - runif(10。 min=1000。 max=10000)
par(mar = c(5。 4, 4。 4) 0。 3) #為z軸留出空間 0.
plot(x, y) # first plot.
par(new = TRUE)
plot(x,z, type = "l"。 axes = FALSE。 bty = "n", xlab = ""。 ylab = "")
軸(side=4。 在= pretty(range(z)))
mtext("z", side=4。 行=3)。

資料 <- tibble()
x = x,
y = y,
z = z
)
資料 %>%
mutate(y = scale(y)。 z = scale(z) %> %
ggplot(aes(x =) 運算子">=x))
geom_line(aes(y =) 運算子">=z))
geom_point(aes(y = y))

創建于2021-09-20,由reprex包(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322212.html
標籤:

