繁体   English   中英

是否可以在ggplot中创建3个系列(2线和1点)的多面图?

[英]Is it possible to create 3 series ( 2 lines and one points) faceted plot in ggplot?

我正在尝试使用R中的基本图形包编写的代码写入ggplot。

我使用基本图形包获得的图形如下:

![在此处输入图片描述] [1]

我想知道是否可以在ggplot2中创建这种图形。 我认为我们可以使用面板来创建这种图形,但是我想知道是否可以对这种图形使用分面。 我遇到的主要困难是最大值和最小值具有相同的长度,而观察到的数据不是连续数据,并且间隔是完全不同的。

关于为这种类型的绘图安排数据的任何想法都将非常有帮助。 非常感谢。

Jdbaba,

从您的评论中,您提到您希望geom_point仅具有. 在传说中。 此功能尚未实现,可以直接在ggplot2 (如果我是对的话)。 然而,有一个固定/变通由给定@Aniko这篇文章 它有点棘手,但辉煌! 而且效果很好。 这是我尝试过的版本。 希望这是您所期望的。

# bind both your data.frames
df <- rbind(tempcal, tempobs)

p <- ggplot(data = df, aes(x = time, y = data, colour = group1, 
                 linetype = group1, shape = group1))
p <- p + geom_line() + geom_point()
p <- p + scale_shape_manual("", values=c(NA, NA, 19))
p <- p + scale_linetype_manual("", values=c(1,1,0))
p <- p + scale_colour_manual("", values=c("#F0E442", "#0072B2", "#D55E00"))
p <- p + facet_wrap(~ id, ncol = 1)
p

这个想法是首先创建一个带有在美学部分中设置的所有必要属性的图表,绘制所需内容,然后稍后使用scale_._manual手动更改设置。 例如,您可以在scale_linetype_manualunset0 同样,您可以在scale_shape_manual使用NA unset线的点unset 在这里,前两个值用于group1=maximum and minimum ,最后一个用于observed 因此,我们将NA设置为前两个maximumminimum ,将0设置为linetype observed

这是情节:

在此处输入图片说明

找到的解决方案:感谢Arun和Andrie

以防万一有人需要这种问题的解决方案。

我使用的代码如下:

library(ggplot2)
tempcal <-  read.csv("temp data ggplot.csv",header=T, sep=",")
tempobs <- read.csv("temp data observed ggplot.csv",header=T, sep=",")
p <- ggplot(tempcal,aes(x=time,y=data))+geom_line(aes(x=time,y=data,color=group1))+geom_point(data=tempobs,aes(x=time,y=data,colour=group1))+facet_wrap(~id)
p

使用的数据集为https://www.dropbox.com/s/95sdo0n3gvk71o7/temp%20data%20observed%20ggplot.csv

https://www.dropbox.com/s/4opftofvvsueh5c/temp%20data%20ggplot.csv

获得的图如下:

在此处输入图片说明

Jdbaba

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM