gpt4 book ai didi

R ggplot2 - 具有通用色标的多个图

转载 作者:行者123 更新时间:2023-12-04 11:18:07 35 4
gpt4 key购买 nike

我有两个数据框,它们针对同一组坐标给出两个不同时间的温度。我想在两个地 block 之间使用相同的颜色为相同的温度将两者绘制在一起;也就是说,我想为这两个地 block 创建一个图例,考虑到这两个地 block 的温度范围不同这一事实。

我以为我可以使用 scale_colour_manual(),但我不确定如何在这种情况下实现它,因为我基本上有连续变量(我的真实数据有数万个的观察)。这是我目前所拥有的示例:

# Create sample data

dat1 <- data.frame(c(-158.28, -158.27, -158.26),
c(21.57, 21.56, 21.57), c(24, 22, 25))
names(dat1) <- c('x', 'y', 'Temp.')


dat2 <- data.frame(c(-158.28, -158.27, -158.26),
c(21.57, 21.56, 21.57), c(22, 20, 23))
names(dat2) <- c('x', 'y', 'Temp.')


# Create plots

plot1 <- ggplot(dat1, aes(x,y)) + geom_point(aes(color = Temp.)) +
scale_colour_gradientn(colours = rev(rainbow(4))) +
theme(
title = element_text('January 1, 1990 at 00:00'),
legend.position = 'none') +
ggtitle('Jan. 1, 1990 00:00')


plot2 <- ggplot(dat2, aes(x,y)) + geom_point(aes(color = Temp.)) +
scale_colour_gradientn(colours = rev(rainbow(4))) + theme(
title = element_text('August 18, 2007 at 02:00'),
legend.position = 'none') +
ggtitle('Aug. 18, 2007 14:00')


# Combine plots

grid.arrange(plot1, plot2, ncol = 2, nrow = 1, respect = T)

Code output

我想更改色标,使其与两个图形的组合温度相关,而不是单个图形。此代码不起作用,但它显示了我要执行的操作:

scale_colour_gradientn(colours = rev(rainbow(4, 
start = min(c(dat1$Temp.,dat2$Temp.)),
end = max(c(dat1$Temp.,dat2$Temp.)))))

最佳答案

在 ggplot2 中,当您制作具有多个方面的单个绘图时,这样的事情会变得容易得多 - 试试这个:

# Add identifiers to each set
dat1$dtime <- 'Jan. 1, 1990 00:00'
dat2$dtime <- 'Aug. 18, 2007 14:00'

# Stack them
dat_all <- rbind(dat1, dat2)


# Plot all at once
ggplot(dat_all, aes(x = x, y = y, color = `Temp.`)) +
geom_point() +
facet_wrap( ~ dtime) +
scale_colour_gradientn(colours = rev(rainbow(4)))

关于R ggplot2 - 具有通用色标的多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069900/

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