0
t <- structure(list(X = 1:30, Country = structure(c(3L, 1L, 3L, 1L, 
3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 2L, 2L, 
3L, 1L, 3L, 1L, 3L, 1L, 2L, 3L, 1L, 3L), .Label = c("China", 
"Germany", "USA"), class = "factor"), Industry = structure(c(3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Agriculture", 
"IT", "Manufacturing"), class = "factor"), Date = structure(c(15393, 
15393, 15394, 15394, 15397, 15397, 15398, 15398, 15399, 15399, 
15400, 15400, 15401, 15401, 15404, 15404, 15405, 15405, 15405, 
15405, 15406, 15406, 15407, 15407, 15408, 15408, 15408, 15411, 
15411, 15412), class = "Date"), count = c(4L, 1L, 5L, 1L, 4L, 
1L, 4L, 1L, 8L, 1L, 7L, 1L, 4L, 1L, 4L, 1L, 9L, 1L, 4L, 3L, 4L, 
1L, 4L, 1L, 9L, 1L, 2L, 7L, 1L, 4L)), .Names = c("X", "Country", 
"Industry", "Date", "count"), row.names = c(NA, 30L), class = "data.frame")

そのパネルのデータに比例するようにyaxisスケールが必要です。私がこれをするとき:

# install.packages("ggplot2", dependencies = TRUE)
# install.packages("scales", dependencies = TRUE)
require(ggplot2)
require(scales)
p1 <- ggplot(t, aes(Date, count)) + 
  geom_bar(aes(fill=Industry), stat="identity", position="stack") + 
  geom_smooth(method="lm", se=T, size=0.5, colour="yellow") +
  xlab("Date") + ylab("Number of Input") +
  facet_grid(Industry~Country, scale="free", margins=T) + 
  theme(legend.position = 'bottom', legend.direction = 'horizontal', legend.title = element_blank(), legend.text = element_text(size=10, face = 'bold')) +theme(axis.title.x = element_text(face="bold", colour="white", size=12), axis.text.x  = element_text(angle=90, face="bold", size=10),axis.title.y = element_text(face="bold", colour="white", angle=90, size=10), axis.text.y=element_text(size=10, face="bold"),legend.text = element_text(size=10, face = 'bold'), legend.title = element_blank()) +scale_x_date(breaks = "3 month", minor_breaks = "1 week", labels=date_format("%b-%y"))+ theme(strip.text.x = element_text(size=10, face="bold", colour="navyblue"), strip.background = element_rect(colour="blue", fill="white"))+ ggtitle("Number of Monthly Breaches")+ 
  theme(plot.title=element_text(size=13, colour="white", face="bold")) + ylim(0, max(t$count))

yaxisの制限はすべてのパネルで同じです、私はこれを試しました

scales=free_y 

動作していないようです。この問題に取り組む方法はありますか?

4

2 に答える 2

4

やったかもしれませんがscales="free_y"+ ylim(0, max(t$count)コードの最後にがあります。それを削除して、何が起こるかを見てください;)

于 2013-02-04T22:32:17.547 に答える
2

上記の答えは良いです。保守が非常に難しいように見えるので、コードを構造化するだけです。私はプロットとテーマステートメントを混ぜません。

プロットだけ:

p1 <- ggplot(dat, aes(Date, count)) + 
  geom_bar(aes(fill=Industry), stat="identity", position="stack") + 
  geom_smooth(method="lm", se=T, size=0.5, colour="yellow") +
  facet_grid(Industry~Country, scales="free_y", margins=T) + 
  scale_x_date(breaks = "3 month", minor_breaks = "1 week", 
             labels=date_format("%b-%y"))

次にテーマ

mytheme <-  theme(legend.position = 'bottom', legend.direction = 'horizontal',
        legend.title = element_blank(), 
        legend.text = element_text(size=10, face = 'bold')) +
  theme(axis.title.x = element_text(face="bold", colour="white", size=12), 
        axis.text.x  = element_text(angle=90, face="bold", size=10),
        axis.title.y = element_text(face="bold", 
                                    colour="white", 
                                    angle=90, 
                                    size=10),
        axis.text.y=element_text(size=10, face="bold"),
        legend.text = element_text(size=10, face = 'bold'), 
        legend.title = element_blank()) +
  theme(strip.text.x = element_text(size=10, 
                                    face="bold", colour="navyblue"), 
        strip.background = element_rect(colour="blue", fill="white"))+ 
  theme(plot.title=element_text(size=13, colour="white", face="bold"))


  p1 + mytheme

ここに画像の説明を入力してください

于 2013-02-04T22:45:03.953 に答える