كيف ترسم فقط مجموعة من القيم في geom_point من حزمة GGPLOT2؟

StackOverflow https://stackoverflow.com/questions/3694862

  •  02-10-2019
  •  | 
  •  

سؤال

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

أي مساعدة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا هو ما تبحث عنه ، ولكن طريقة واحدة لتجاهل قيم الصفر أثناء رسم النقاط هي تعديل بيان 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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top