2010-08-18 76 views
3

下面的代码工作得很好:R + ggplot:坐标转换和geom_fill

p <- ggplot(df,aes(x=x,y=y)) 
p <- p + geom_tile(aes(fill=z)) 
p 

它绘制一个很好的热图。这里df包含xy,使用expand.grid()z创建,其包含每个(x,y)坐标的值。

此代码,而另一方面

p <- ggplot(df,aes(x=x,y=y)) 
p <- p + coord_map(project="lagrange") 
p <- p + geom_tile(aes(fill=z)) 
p 

不绘制在所有的东西很多(并且不与所有的坐标转换我试着绘制任何东西)。我的理解是,coord_map适用于x和y数据,填充应绘制在转换后的坐标之上。然而,这一定是错误的,因为一旦坐标被映射到一个新的框架,没有任何东西被绘制出来。

所以我的问题是:我应该怎么做才能正常工作?这可能是与我的data.frame df

+0

你有最新版本的ggplot2吗? – hadley 2010-08-18 19:47:29

+0

我正在使用ggplot2_0.8.7,所以...不。我不是。 update.packages()也不更新包。将继续尝试,并希望它会解决我的问题... – 2010-08-19 13:20:46

+0

好的,我已经更新,现在它正在打破所有的地方。我会问一个新问题... – 2010-08-19 13:50:55

回答

1

我认为问题在于瓷砖几何如何计算应该覆盖的区域与新坐标系的交互。我试着用这段代码重新创建你的问题。

vol.m <- melt(volcano) 

#points & cartesian 
p <- ggplot(vol.m, aes(X1, X2, color = value)) + geom_point() 
#points and map 
p + coord_map() 

#hex & cartesian 
p <- ggplot(vol.m, aes(X1, X2, fill = value)) + geom_hex(stat = "identity") 
#hex & map 
p + coord_map 

我坐在那里一会儿与geom_tile()尝试同样的事情,但它不会情节,所以我相信你的话,这是行不通的。注意六角形如何在地图坐标上全部搞砸。我想当试图绘制已经计算出的瓷砖以填充该区域时,它不能容忍将它们绘制在不同的坐标系上。

编辑: 也就是说,改变坐标系仅仅改变绘图上的“图纸”。因此,如果您计算了线性回归统计量,然后将坐标更改为进行对数转换,则绘制的回归线将会弯曲。我猜测ggplot2不能“弯曲”瓷砖以适应非笛卡尔坐标系。