Как нарисовать только диапазон значений в geom_point из пакета ggplot2? - PullRequest
2 голосов
/ 12 сентября 2010

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 ]

7 голосов
/ 12 сентября 2010

Я не уверен, что это то, что вы ищете, но один из способов игнорировать нулевые значения при построении точек состоит в том, чтобы изменить выражение geom_point () на

geom_point(subset = .(value > 0))

эта строка пропускает только ненулевые значения во фрейме данных для построения.

0 голосов
/ 13 сентября 2010

Просто чтобы показать, как я использовал предложения Рамната (спасибо!) (Чтобы помочь таким новичкам, как я):

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()
...