1

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

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

包含六个图表的示例图像

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

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

4

2 回答 2

1

贾巴巴,

从您的评论中,您提到您希望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. 例如,您可以按inunset排列。同样,您可以使用in为线条点。在这里,前两个值是 for ,最后一个是 for 。因此,我们设置为前两个 for和并设置为for 。0scale_linetype_manualunsetNAscale_shape_manualgroup1=maximum and minimumobservedNAmaximumminimum0linetypeobserved

这是情节:

在此处输入图像描述

于 2013-01-26T00:46:05.897 回答
0

找到的解决方案: 感谢 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

得到的地块如下:

在此处输入图像描述

贾巴巴

于 2013-01-23T09:00:41.517 回答