ggplot条形图额外的空间

时间:2013-03-09 19:26:51

标签: r ggplot2 bar-chart

我正在尝试使用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

我的问题是无论我尝试什么,我无法摆脱绘图区域的额外空间。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

代码中的主要问题是变量Length中的级别顺序错误。 您可以使用函数factor()和参数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))

答案 1 :(得分:1)

删除此scale_x_discrete(limits = data.long$Length)并再次尝试希望此操作

编辑:如果你有scale_y_discrete(limits = data.long$Length)

,请删除它