رسم متجولين من البيانات على مؤامرة مبعثرة GGPlot2 باستخدام ص

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

  •  19-09-2019
  •  | 
  •  

سؤال

لقد كنت تجريب كليهما ggplot2 و lattice لوحات الرسم البياني للبيانات. أواجه مشكلة صغيرة في التفاف عقلي حول ggplot2 نموذج. على وجه الخصوص، كيف يمكنني رسم مؤامرة مبعثرة مع مجموعتين من البيانات على كل لوحة:

في lattice يمكنني القيام بذلك:

xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

وهذا من شأنه أن يعطيني لوحة لكل ولاية مع كل عمود

يمكنني أن أفعل عمود واحد مع ggplot2:

pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) 
      + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

ما لا أستطيع Grok هو كيفية إضافة Actual_Value إلى GGPLOT أعلاه.

تعديل وأشار هادلي إلى أن هذا سيكون أسهل بالفعل مع مثال استنساخ. إليك التعليمات البرمجية التي يبدو أنها تعمل. هل هناك طريقة أفضل أو أكثر إيجاز للقيام بذلك مع ggplot؟ لماذا هو بناء الجملة لإضافة مجموعة أخرى من النقاط إلى ggplot تختلف عن إضافة المجموعة الأولى من البيانات؟

library(lattice)
library(ggplot2)

#make some example data
dd<-data.frame(matrix(rnorm(108),36,3),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("Predicted_value", "Actual_value", "x_value", "State_CD")

#plot with lattice
xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

#plot with ggplot
pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

pg + geom_point(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green")

يبدو إخراج شعرية مثل هذا:alt text
(مصدر: cerebralmastication.com.)

و ggplot يبدو وكأنه هذا:alt text
(مصدر: cerebralmastication.com.)

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

المحلول

فقط متابعة ما اقترحه إيان: بالنسبة ل Ggplot2، فأنت تريد حقا أن جميع الأشياء المحور Y في عمود واحد مع عمود آخر كعامل يشير إلى الطريقة التي تريد تزيينها. من السهل القيام بذلك مع melt. وبعد لخفة الظل:

qplot(x_value, value, 
      data = melt(dd, measure.vars=c("Predicted_value", "Actual_value")), 
      colour=variable) + facet_wrap(~State_CD)

إليك ما يبدو عليه بالنسبة لي:alt text
(مصدر: princeton.edu.)

للحصول على فكرة عما melt يفعل في الواقع، إليك الرأس:

> head(melt(dd, measure.vars=c("Predicted_value", "Actual_value")))
     x_value State_CD        variable      value
1  1.2898779        A Predicted_value  1.0913712
2  0.1077710        A Predicted_value -2.2337188
3 -0.9430190        A Predicted_value  1.1409515
4  0.3698614        A Predicted_value -1.8260033
5 -0.3949606        A Predicted_value -0.3102753
6 -0.1275037        A Predicted_value -1.2945864

ترى، إنه "يذوب" المتوقع_Value و Actual_Value في عمود واحد يسمى value وأضيف عمود آخر يسمى variable يتيح لك معرفة الأعمدة التي جاءها في الأصل من.

نصائح أخرى

تحديث: عدة سنوات في الوقت الحالي، كنت دائما تقريبا استخدام طريقة جوناثان (عبر حزمة التجزيد) مع ggplot2. إجابتي أدناه تعمل في قرصة، ولكنها تعمل بسرعة عندما يكون لديك 3 متغيرات.


أنا متأكد من أن هاد سيكون لديه إجابة أفضل، ولكن - بناء الجملة مختلف لأن ggplot(dd,aes()) بناء الجملة (على ما أظن) المقصود في المقام الأول لتخطيط متغير واحد فقط. لمدة يومين، أود استخدام:

ggplot() + 
geom_point(data=dd, aes(x_value, Actual_value, group=State_CD), colour="green") + 
geom_point(data=dd, aes(x_value, Predicted_value, group=State_CD), shape = 2) + 
facet_wrap(~ State_CD) + 
theme(aspect.ratio = 1)

يمنحها مجموعة من النقاط الأولى من GGPLOT () نفس بناء الجملة كما الثانية. أجد أن هذا أسهل في التعامل معه لأن بناء الجملة هو نفسه ويؤكد "قواعد الرسومات" الموجودة في جوهر GGPLOT2.

قد ترغب فقط في تغيير شكل بياناتك قليلا، بحيث يكون لديك متغير واحد Y-Axis، مع متغير عامل إضافي يشير إلى ما إذا كان متغيرا متوقعا أو فعليا.

هل هذا شيء مثل ما تحاول القيام به؟

dd<-data.frame(type=rep(c("Predicted_value","Actual_value"),20),y_value=rnorm(40),
                x_value=rnorm(40),State_CD=rnorm(40)>0)
qplot(x_value,y_value,data=dd,colour=type,facets=.~State_CD)

حسنا بعد نشر السؤال الذي ركضت عبر هذا r مساعدة موضوع ربما ساعدني. يبدو أنني أستطيع القيام بذلك:

 pg + geom_line(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green") 

هل هذه طريقة جيدة للقيام بالأشياء؟ من الغريب بالنسبة لي لأن إضافة العنصر الثاني لديه بناء جملة مختلف تماما من الأول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top