ggplot2 scale_x_continuous限制或绝对

Mik*_*eTP 5 r scale ggplot2

我在一个循环(按县名)中使用以下ggplot2 v0.9 scale_x_continious逻辑,试图在具有相同x标度的单独图上绘制每个县的数据.

MaxDays=365*3;
p <- p + scale_x_continuous(limits=c(0,MaxDays))
p <- p + scale_x_continuous(breaks=seq(0,MaxDays,60))
Run Code Online (Sandbox Code Playgroud)

如果所有县都有数据> = MaxDate,那么逻辑很有效.但是,如果天数小于MaxDate,则图表x比例不均匀(即比如0 - 720天)

如何将scalse设置为绝对值而不是限制值?

任何援助都将受到极大的赞赏

############################################
###  Sample Data Below
############################################

# County 1 data
Days=seq(1,30,1)
Qty=Days*10
County=rep("Washington",length(Days))
df1=data.frame(County, Qty, Days)

# County 2 data
Days=seq(1,15,1)
Qty=Days*20
County=rep("Jefferson",length(Days))
df2=data.frame(County, Qty, Days)

# County 1 and 2 data
df3=rbind(df1,df2)

# calculate ranges for x scales
yrng=range(df3$Qty)
xrng=range(df3$Days)

# Scatter Plots
fname=paste("C:/test",".pdf",sep="");
pdf(fname,10,8,onefile=TRUE,paper="a4r");

p <- ggplot()
cnty=unique(df3$County)
n=length(unique(df3$County))
for (i in 1:n){
  df4<-subset(df3, County==cnty[i])
  p <- ggplot(df4, aes(x=Days, y=Qty))
  p <- p + geom_point()
  p <- p + opts(title=cnty[i])
  p <- p + scale_x_continuous(limits=c(xrng[1],xrng[2])) 
  p <- p + scale_x_continuous(breaks=seq(xrng[1],xrng[2],1))
  p <- p + coord_cartesian(xlim=c(xrng[1],xrng[2]))
print(p);
}
dev.off()
Run Code Online (Sandbox Code Playgroud)

Bri*_*ggs 9

p <- p + coord_cartesian(xlim=c(0, MaxDays))
Run Code Online (Sandbox Code Playgroud)

编辑:基于评论.

你的问题是,第二个scale_x_continuous()是替换,而不是扩充第一个,因此不保留限制.

你可以更换线条

p <- p + scale_x_continuous(limits=c(xrng[1],xrng[2])) 
p <- p + scale_x_continuous(breaks=seq(xrng[1],xrng[2],1))
Run Code Online (Sandbox Code Playgroud)

p <- p + scale_x_continuous(limits=c(xrng[1],xrng[2]), 
                            breaks=seq(xrng[1],xrng[2],1))
Run Code Online (Sandbox Code Playgroud)

给出这样的东西:

在此输入图像描述

  • @Eduardo在美学映射和转换中使用“$”(甚至“[[”)访问数据框的列是不合适的。对于像尺度极限这样的东西,这不是什么问题;将计算结果分配给“ggplot”调用之外的变量可能更好,但在功能上应该是等效的。如果这不能很好地回答您的问题,请发布一个新问题。 (2认同)