Как отрисовать только диапазон значений в geom_point из пакета ggplot2?

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

любая помощь будет принята с благодарностью.


person Schrodinger's Cat    schedule 12.09.2010    source источник


Ответы (2)


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

geom_point(subset = .(value > 0))

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

person Ramnath    schedule 12.09.2010
comment
Как бы вы использовали эту функцию подмножества для нечисловых значений, таких как животное столбца, где записью строки является собака. - person KLDavenport; 03.01.2013

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

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()
person Schrodinger's Cat    schedule 13.09.2010