Как нарисовать только ряд значений в Geom_Point из пакета GGPLOT2?
-
02-10-2019 - |
Вопрос
Здравствуйте, все, у меня есть следующие расплавленные данные:
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.
Я использовал следующий код для диаграммы BubBlechart данных:
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 (ноль) и использовать только для масштабирования значений точек между всеми тем, которые являются термическими, чем нулями и максимальным значением. Я не хочу удалять нулевые значения ROWS из данных, поскольку для того, чтобы доказать точку, я хочу, чтобы все станции и переменные были включены, и иметь те, что с нулевым значением оставлено пустым.
Мне удалось использовать это, чтобы игнорировать нулевые значения, но масштабирование не работает:
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()
Любая помощь будет очень ценится.
Решение
Я не уверен, что это то, что вы ищете, но один подход для игнорирования нулевых значений при построении точек - это изменить оператор Geom_Point () для
geom_point(subset = .(value > 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()