1

Rでggplotを使用してグラフを描画しようとしています.これが私のコードです:

library(reshape2)
library(ggplot2)
dfw <- read.table(header=T, text='
    Length  L1  L2
    200:399     27665   28483
    400:599     9232    11856
    600:799     3347    4072
    800:999     1923    2112
    1000:1199   1322    1511
    1200:1399   955 1118
    1400:1599   693 850
    1600:1799   496 640
    1800:1999   332 463
    2000:2199   219 306
    2200:2399   142 212
    2400:2599   73  134
    2600:2799   65  121
    2800:2999   39  87
    3000:3199   19  57
    3200:3399   20  31
    3400:3599   14  37
    3600:3799   4   22
    3800:3999   2   17
    4000:9599   8   53
')

 data.long <- melt(data = dfw, id.var = "Length", 
               measure.vars = c("L1", "L2"), variable.name = "Condition")

 ggplot(data=data.long, aes(x=Length, y=value, fill=Condition)) + 
         geom_bar(stat="identity", position=position_dodge(width = 1), 
         colour="black", na.rm = TRUE, width = 0.5) + 
         scale_x_discrete(limits = data.long$Length) + 
         theme(axis.title.x = element_text(face="bold", colour="#990000", size=20),
         axis.text.x  = element_text(angle=90, vjust=2, size=16))

ggplot2_my_plot

私の問題は、何を試しても、プロット領域の余分なスペースを取り除くことができないことです。アドバイスをいただければ幸いです。

4

2 に答える 2

2

コードの主な問題は、変数のレベルの順序が間違っていることですLengthfactor()関数と引数で修正できますlevels=dfw$Length(元のデータフレームの順序が正しいため)。

data.long$Length<-factor(data.long$Length,levels=dfw$Length)

これで、制限を設定するためにを使用する必要はありませんscale_x_discrete()

 ggplot(data=data.long, aes(x=Length, y=value, fill=Condition)) + 
  geom_bar(stat="identity", position=position_dodge(width = 1), colour="black", na.rm = TRUE, width = 0.5) + 
  theme(axis.title.x = element_text(face="bold", colour="#990000", size=20),
        axis.text.x  = element_text(angle=90, vjust=2, size=16))
于 2013-03-09T19:37:08.937 に答える
1

これを削除しscale_x_discrete(limits = data.long$Length)てもう一度お試しください

編集: Y がある場合は、これを削除して削除しますscale_y_discrete(limits = data.long$Length)

于 2013-03-09T19:33:17.097 に答える