2016-04-11 11 views
4

目標は、ティックマークとバーの間の間隔を取り除いて、バー。片側にggplotバーの縮尺を手動で制限する方法はありません

私は、Rのggplot2を使用して数十の棒グラフを実行しており、各グラフに対してExcelを使用して手動で開発された組織スタイルガイドに従っています。最大長さの棒は、異なるグラフの長さが異なり、ソースデータが変わると変更される可能性があるため、手動で制限を設定する必要はありません。私はすでに相談してきた

:[自動入力に応じて制限を調整する方法がありますおそらく、ここでの回避策はありますか?]:

Removing negative plot area in ggplot2

How to remove space between axis & area-plot in ggplot2?

Force the origin to start at 0 in ggplot2 (R)

http://docs.ggplot2.org/dev/vignettes/themes.html

グラフwhほとんどの作品は次のコードから生成されます。公共の目的のために、私はMASSパッケージから "quine"データセットを使用しています。まず、年齢別に女性の割合を調べます。それから私は年齢層を女性の割合で並べます。

require(MASS) 
attach(quine) 
p.SexAge <- prop.table(table(Sex, Age), 2) 
perc.SexAge <- round(p.SexAge * 100) 

perc.SexAge.flattened <- as.data.frame(perc.SexAge) 
perc.SexAge.flattened.F <- subset(perc.SexAge.flattened, Sex == "F") 
require(ggplot2) 

ggplot(data=perc.SexAge.flattened.F, aes(x=reorder(Age, -Freq), y=Freq)) + 
geom_bar(stat="identity", fill = "#00ABE1") + 
scale_x_discrete(expand = c(0, 0)) + 
scale_y_continuous(expand = c(0,6)) + 
ggtitle("Percent Female By Age") + 
ylab("Percent Female") + 
xlab("Age Group\n") + 
#theme_classic() + 
theme(plot.margin = unit(c(0,0,0,0), "in")) + 
coord_flip() + 
geom_text(aes(label = Freq), vjust = 0.4, hjust = - 0.4, size = 3.5) 

default theme

theme_classic()は、私たちのスタイルガイドを満たすために、空のホワイトスペースを作成するために、コメント解除された場合は、縦軸の目盛りやバーのベースとの間の過度なスペースがあることは明らかです。より多くのバー(図示せず)があれば、この問題はさらに悪化する。私はscale_y_continuous(expand = c(0,6))scale_y_continuous(expand = c(0,0)) に変更した場合は

class theme

は、 ラベルは、組織のスタイルガイドに違反最長のバー、 に切り落とされます。

chopped off label

答えて

8

expand 2つの引数が乗法であり、両側のための拡張定数を添加剤として、あなたの友人であることを行っていません。したがって、c(0, 6)は常に各側に6単位を追加します。連続データのデフォルト値はc(0.05, 0)で、どちらの側でも5%の範囲の増加です。

代わりに必要な範囲を事前に計算することができます。左の境界は、常に我々は最大+ 6に設定し、右1(範囲はプロット間で非常に変動する場合にも倍数因子を使用することができます。)

lim <- c(0, max(perc.SexAge.flattened.F$Freq) + 6) 
#lim <- c(0, max(perc.SexAge.flattened.F$Freq) * 1.1) # 10% increase 

ggplot(data=perc.SexAge.flattened.F, aes(x=reorder(Age, -Freq), y=Freq)) + 
    geom_bar(stat="identity", fill = "#00ABE1") + 
    scale_x_discrete(expand = c(0, 0)) + 
    scale_y_continuous(expand = c(0, 0), limits = lim) +    #This changed! 
    ggtitle("Percent Female By Age") + 
    ylab("Percent Female") + 
    xlab("Age Group\n") + 
    theme_classic() + 
    theme(plot.margin = unit(c(0,0,0,0), "in")) + 
    coord_flip() + 
    geom_text(aes(label = Freq), vjust = 0.4, hjust = - 0.4, size = 3.5) 

enter image description here

、0に設定する必要がありますps attachを使用しないでください。特に、他の人が環境にロードするコードの場合は、を使用してください。

関連する問題