[英]Manually Set Scale of contour plot using geom_contour_filled
I would like manually adjust the scales of two contour plots such that each have the same scale even though they contain different ranges of values in the z-direction.我想手动调整两个等高线图的比例,即使它们在 z 方向上包含不同的值范围,它们也具有相同的比例。
For instance, lets say that I want to make contour plots of z1 and z2:例如,假设我想制作 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)
Is there a way I can manually adjust the scale of each plot such that each contain the same number of levels (in this case bins = 8), the minimum is the same for both (in this case min(z1)), and the max is the same for both (max(z2))?有没有办法我可以手动调整每个 plot 的比例,使每个包含相同数量的级别(在本例中 bin = 8),两者的最小值相同(在本例中 min(z1)),并且两者的最大值相同(max(z2))?
One can manually define a vector of desired breaks points and then pass the vector to the "breaks" option in the geom_contour_filled()
function.可以手动定义所需断点的向量,然后将向量传递给geom_contour_filled()
function 中的“breaks”选项。
In the below script, finds 8 break intervals between the grand minimum and the grand maximum of the dataset.在下面的脚本中,在数据集的最小值和最大值之间找到 8 个中断间隔。
Also there are 2 functions defined to create the palette and label names for the legend.此外,还定义了 2 个函数来创建调色板和图例的 label 名称。
#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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.