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)
需要(额外)
#玩具数据
dat
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)
需要(额外)
#玩具数据

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,这是一个很好且完全有效的解决方案。不幸的是,我只能给出一个答案,你的答案应该被选中。