如何从ggplot2包中仅绘制geom_point中的一系列值?

时间:2010-09-12 12:44:31

标签: r ggplot2 scatter-plot

alt text大家好, 我有以下熔融数据:

 X      variable       value    
1 StationA SAR11.cluster 0.001309292
2 StationB SAR11.cluster 0.002712237
3 StationC SAR11.cluster 0.002362708
4 StationD SAR11.cluster 0.002516751
5 StationE SAR11.cluster 0.004301075
6 StationF SAR11.cluster 0.0

.
.
.
etc.
etc.

我使用以下代码绘制数据的气泡图:

ggplot(foomelt, aes(x=foomelt$Station, y=variable, angle=45, size=(value))) + 
+geom_point() +  opts(theme_bw(), axis.text.x = theme_text(size=10, angle = 70)) 
+ scale_area()

一切都很好,除了我想忽略0(零)值并且仅用于在所有那些比零更大的点和最大值之间的点值缩放。 我不想从数据中删除零值行,因为为了证明一个点,我希望包含所有的站和变量,并将零值保留为空。

我设法使用它来忽略零值,但缩放不起作用:

   ggplot(foomelt, aes(x=foomelt$Station, y=variable, angle=45, size=(value>0))) +
    + geom_point() +  opts(theme_bw(), axis.text.x = theme_text(size=10, angle = 70)) 
    + scale_area("Ratio") + scale_size_identity()

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:7)

我不确定这是否是您正在寻找的,但是在绘制点时忽略零值的一种方法是将geom_point()语句修改为

geom_point(subset = .(value > 0))

此行仅传递要绘制的数据框中的非零值。

答案 1 :(得分:0)

只是为了展示我如何使用Ramnath(谢谢!)的建议(以帮助像我这样的新手):

foo= read.csv('~/Desktop/foo.csv', header=T)
foomelt = melt(foo)
foomelt$Station<-factor(foomelt$Station, levels=unique(as.character(foo[[1]]))) #to keep the order of the x axis the same
                                                                                # as in the original file`
bigfoo <- subset(foomelt, value > 0) #use only those values that are larger than 0
ggplot(bigfoo, aes(x=bigfoo$Station, y=variable, angle=45, size=(value))) +  geom_point() 
+  opts(theme_bw(), axis.text.x   = theme_text(size=9, angle = 90)) + scale_area()