r 在 png 上绘制多个 ggplot,stat_smooth
r plot multiple ggplot, stat_smooth on png
我正在尝试使用 ggplot() 或 stat_smooth() 以 png 作为背景绘制具有平滑线的多个数据帧。
我有三个数据框
data1 <- data.frame(Max.x, Max.y)
data2 <- data.frame(Med.x, Med.y)
data3 <- data.frame(Min.x, Min.y)
和一个图片(png)文件
mypng <- readPNG("picture.png")
我发现使用 stat_smooth(span=0.4) 它将创建一条平滑的线,该线穿过数据框中的所有点。
现在我正在尝试在 mypng 上绘制三个平滑的线条
我试过几样东西。
ggplot(data1, aes(x=Max.x, y=Max.y))+scale_x_continuous(limits = c(126,129))+scale_y_continuous(limits = c(37.5, 38.5))+ annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(span=0.4)
data2 和 data3 也一样。这会在 png 上绘制每一行,但我找不到将所有三行都绘制在同一 png 上的方法。
另外,请注意该图必须设置 x、y 最大值和最小值 b/c 我的数据位于这些坐标之间。
我试过的另一件事:
ggplot()+annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(data=data1, aes(x=Max.x, y=Max.y), span=0.4)+stat_smooth(data=data2, aes(x=Med.x, y=Med.y), span=0.4)+stat_smooth(data=data3, aes(x=Min.x, y=Min.y), span=0.4)+scale_x_continuous(limits=c(126,129))+scale_y_continuous(limits=c(37.5,38.5))
这绘制了所有三个平滑线。但是图片没有显示。
我现在卡住了...我可以在 mypng 上获得三个不同的图。我可以获得所有三个图,但不能在 mypng 上。
我怎样才能在 mypng 上获得所有三行?
怎么样:
library(png)
library(ggplot2)
data1 <- data.frame(series = rep("max",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
data2 <- data.frame(series = rep("med",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
data3 <- data.frame(series = rep("min",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
df <- rbind(data1,data2,data3)
mypng <- readPNG("C:/Users/lorenzr/Pictures/family.png")
ggplot(df, aes(x=x, y=y, colour = series))+
scale_x_continuous(limits = c(126,129))+
scale_y_continuous(limits = c(37.5, 38.5))+
annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+
stat_smooth(span=0.4)
我正在尝试使用 ggplot() 或 stat_smooth() 以 png 作为背景绘制具有平滑线的多个数据帧。
我有三个数据框
data1 <- data.frame(Max.x, Max.y)
data2 <- data.frame(Med.x, Med.y)
data3 <- data.frame(Min.x, Min.y)
和一个图片(png)文件
mypng <- readPNG("picture.png")
我发现使用 stat_smooth(span=0.4) 它将创建一条平滑的线,该线穿过数据框中的所有点。
现在我正在尝试在 mypng 上绘制三个平滑的线条
我试过几样东西。
ggplot(data1, aes(x=Max.x, y=Max.y))+scale_x_continuous(limits = c(126,129))+scale_y_continuous(limits = c(37.5, 38.5))+ annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(span=0.4)
data2 和 data3 也一样。这会在 png 上绘制每一行,但我找不到将所有三行都绘制在同一 png 上的方法。
另外,请注意该图必须设置 x、y 最大值和最小值 b/c 我的数据位于这些坐标之间。
我试过的另一件事:
ggplot()+annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(data=data1, aes(x=Max.x, y=Max.y), span=0.4)+stat_smooth(data=data2, aes(x=Med.x, y=Med.y), span=0.4)+stat_smooth(data=data3, aes(x=Min.x, y=Min.y), span=0.4)+scale_x_continuous(limits=c(126,129))+scale_y_continuous(limits=c(37.5,38.5))
这绘制了所有三个平滑线。但是图片没有显示。
我现在卡住了...我可以在 mypng 上获得三个不同的图。我可以获得所有三个图,但不能在 mypng 上。 我怎样才能在 mypng 上获得所有三行?
怎么样:
library(png)
library(ggplot2)
data1 <- data.frame(series = rep("max",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
data2 <- data.frame(series = rep("med",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
data3 <- data.frame(series = rep("min",10),
x = rnorm(10, mean = 127.5, sd = 1),
y = rnorm(10, mean = 38, sd = 0.25))
df <- rbind(data1,data2,data3)
mypng <- readPNG("C:/Users/lorenzr/Pictures/family.png")
ggplot(df, aes(x=x, y=y, colour = series))+
scale_x_continuous(limits = c(126,129))+
scale_y_continuous(limits = c(37.5, 38.5))+
annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+
stat_smooth(span=0.4)