gpt4 book ai didi

r - 使用 geom_contour_filled 手动设置等高线图的比例

转载 作者:行者123 更新时间:2023-12-05 02:07:02 24 4
gpt4 key购买 nike

我想手动调整两个等高线图的比例,使每个等高线图具有相同的比例,即使它们在 z 方向上包含不同的值范围。
例如,假设我想绘制 z1 和 z2 的等高线图:

x = 1:15
y = 1:15
z1 = x %*% t(y)
z2 = 50+1.5*(x %*% t(y))

data <- data.frame(
x = as.vector(col(z1)),
y = as.vector(row(z1)),
z1 = as.vector(z1),
z2 = as.vector(z2)
)

ggplot(data, aes(x, y, z = z1)) +
geom_contour_filled(bins = 8)

ggplot(data, aes(x, y, z = z2)) +
geom_contour_filled(bins = 8)

enter image description here enter image description here

有没有一种方法可以手动调整每个绘图的比例,使每个绘图包含相同数量的级别(在本例中为 bins = 8),两者的最小值相同(在本例中为 min(z1)) ,并且两者的最大值相同 (max(z2))?

最佳答案

可以手动定义所需断点的向量,然后将该向量传递给 geom_contour_filled() 函数中的“breaks”选项。

在下面的脚本中,找到数据集的最小值和最大值之间的 8 个中断间隔。

还定义了 2 个函数来为图例创建调色板和标签名称。

 #establish the min and max of scale 
grandmin <- min(z1, z2)-1
grandmax <- max(z2, z2)

#define the number of breaks. In this case 8 +1
mybreaks <- seq(grandmin, ceiling(round(grandmax, 0)), length.out = 9)
#Function to return the dersired number of colors
mycolors<- function(x) {
colors<-colorRampPalette(c("darkblue", "yellow"))( 8 )
colors[1:x]
}

#Function to create labels for legend
breaklabel <- function(x){
labels<- paste0(mybreaks[1:8], "-", mybreaks[2:9])
labels[1:x]
}

ggplot(data, aes(x, y, z = z1)) +
geom_contour_filled(breaks= mybreaks, show.legend = TRUE) +
scale_fill_manual(palette=mycolors, values=breaklabel(8), name="Value", drop=FALSE) +
theme(legend.position = "right")

ggplot(data, aes(x, y, z = z2)) +
geom_contour_filled(breaks= mybreaks, show.legend = TRUE) +
scale_fill_manual(palette=mycolors, values=breaklabel(8), name="Value", drop=FALSE)

enter image description here

关于r - 使用 geom_contour_filled 手动设置等高线图的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62223813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com