R ggplot2栅格标记
我被要求根据污染数据做一个条形图。可以找到示例数据。数据结构如下R ggplot2栅格标记,r,ggplot2,R,Ggplot2,我被要求根据污染数据做一个条形图。可以找到示例数据。数据结构如下 str(datos) 'data.frame': 55 obs. of 10 variables: $ PROVINCIA : int 46 46 46 46 46 46 46 46 46 46 ... $ ESTACION : Factor w/ 55 levels "Alacant-El_Pla",..: 5 1 2 3 8 23 24 21 31 22 ... $ MAXIM
str(datos) 'data.frame': 55 obs. of 10 variables:
$ PROVINCIA : int 46 46 46 46 46 46 46 46 46 46 ...
$ ESTACION : Factor w/ 55 levels "Alacant-El_Pla",..: 5 1 2 3 8 23 24 21 31 22 ...
$ MAXIMO_HORARIO : num 99.5 88.5 88.5 90 97.5 87.3 96 92.5 88 20 ...
$ PROMEDIO_DIARIO : num NA NA NA NA NA NA NA NA NA NA ...
$ MAXIMO_OCTOHORARIO : num 103.9 83.1 80.9 75.7 95.1 ...
$ VARIACION_MAX_HOR : num -25.2 -6.5 -6.7 -1.2 -13.2 -15.4 -12.7
-29.5 -16.3 NA ...
$ VARIACION_PRM_DIA : num NA NA NA NA NA NA NA NA NA NA ...
$ OSCILACION_DIARIO : num 16.5 63.7 53.3 62 26.8 31.3 29.2 15 52 20 ...
$ ESTACIONALIDAD_MAX : num -38.2 -39.6 -36.8 -38.8 -37.6 -51.8 -35.6 -40.3 -42.9 -86.5 ...
$ ESTACIONALIDAD_MAX-1: num NA NA NA NA NA NA NA NA NA NA ...
我试着用以下代码使用ggplot2几何图形和刻面
datos=read.csv("data.csv",header=T,sep=",", na.strings="-99.9")
ggplot(datos, aes(ESTACION,MAXIMO_HORARIO, fill = factor(MAXIMO_HORARIO))) +
geom_bar(stat="identity") +
theme(axis.text.x = element_text(angle=90, size=10)) +
facet_grid(PROVINCIA ~ .)
获取此输出
这是正确的方法,但我希望每个方面(组)都显示自己的值,而不是与另一个方面中的数据相对应的空白,并且每个网格中都有正确的标签。我可以将数据分成三部分,并生成三个不同的绘图,但我只想构建一个包含三个绘图的文件
所需的输出如下所示
编辑:dput的输出(DATO)
**>
**facet\u grid()
不是为满足您的需要而设计的。将三个地块分开是正确的方法。但是使用gridExtra
包可以很容易地将这些绘图元素(gridExtra包称它们为“grob”)组合到单个绘图或单个文件中
require(ggplot2)
require(gridExtra)
#toy data
dat <- data.frame(x=1:20, y=sample(1:20, size=20, replace=T), group=sample(1:3, size=20, replace=T))
#making each "grob"
p1 <- ggplot(subset(dat, group==1), aes(factor(x), y)) +
geom_bar(stat='identity')
p2 <- ggplot(subset(dat, group==2), aes(factor(x), y)) +
geom_bar(stat='identity')
p3 <- ggplot(subset(dat, group==3), aes(factor(x), y)) +
geom_bar(stat='identity')
#combine them into a single stack of plots
pAll <- grid.arrange(p1, p2, p3, ncol=1)
pAll
require(ggplot2)
需要(额外)
#玩具数据
datfacet\u grid()
不是为您所需而设计的。将三个地块分开是正确的方法。但是使用gridExtra
包可以很容易地将这些绘图元素(gridExtra
包称它们为“grob”)组合到单个绘图或单个文件中
require(ggplot2)
require(gridExtra)
#toy data
dat <- data.frame(x=1:20, y=sample(1:20, size=20, replace=T), group=sample(1:3, size=20, replace=T))
#making each "grob"
p1 <- ggplot(subset(dat, group==1), aes(factor(x), y)) +
geom_bar(stat='identity')
p2 <- ggplot(subset(dat, group==2), aes(factor(x), y)) +
geom_bar(stat='identity')
p3 <- ggplot(subset(dat, group==3), aes(factor(x), y)) +
geom_bar(stat='identity')
#combine them into a single stack of plots
pAll <- grid.arrange(p1, p2, p3, ncol=1)
pAll
require(ggplot2)
需要(额外)
#玩具数据
dat听起来像是想要facet\u wrap
而不是facet\u grid
。试一试
ggplot(datos, aes(ESTACION,MAXIMO_HORARIO, fill = factor(MAXIMO_HORARIO))) +
geom_bar(stat="identity") +
theme(axis.text.x = element_text(angle=90, size=10)) +
facet_wrap(~PROVINCIA , scales="free", ncol=1)
得到
听起来你想要facet\u wrap
而不是facet\u grid
。试一试
ggplot(datos, aes(ESTACION,MAXIMO_HORARIO, fill = factor(MAXIMO_HORARIO))) +
geom_bar(stat="identity") +
theme(axis.text.x = element_text(angle=90, size=10)) +
facet_wrap(~PROVINCIA , scales="free", ncol=1)
得到
没有dropbox帐户,无法访问数据。抱歉@ziggystar,没有注意到。我已经添加了dput(datos)的输出。如果没有dropbox帐户,数据是无法访问的。抱歉@ziggystar,没有注意到。我添加了dput(datos)的输出,感谢@curt-f这是一个很好的、完全可以工作的解决方案。不幸的是,我只能给出一个答案,你的答案应该是被选中的。谢谢@curt-f,这是一个很好且完全有效的解决方案。不幸的是,我只能给出一个答案,你的答案应该被选中。