2011-08-25 9 views
8

मैं है निम्नलिखित आर स्क्रिप्ट:भूखंड समारोह नहीं आर भाषा में खाते में भूखंड प्रकार ले करता है

X <- read.table("/tmp/run178/data/monitor/portal_free_heap_monitor.log", header=T, sep=";") 

P1 <- subset(X, Server=="PortalServer1") 
P2 <- subset(X, Server=="PortalServer2") 

png("mygraph.png") 
plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 
q() 

"PortalServer1" के लिए PNG छवि डेटा जिसके परिणामस्वरूप में डॉट्स के साथ और काले रंग में तैयार की है, लेकिन यह चाहिए था लाल रेखाओं के साथ खींचे जाओ। दूसरा एक हरी रेखाओं के साथ उम्मीद के रूप में खींचा जाता है। मैं क्या गलत कर रहा हूं?

संपादित: यहाँ एक्स की संरचना है:

> str(X) 
'data.frame': 5274 obs. of 3 variables: 
$ Time   : Factor w/ 2654 levels "2011.08.24 14:39:29",..: 1 1 2 2 3 3 4 4 5 5 ... 
$ Server   : Factor w/ 2 levels "PortalServer1",..: 1 2 1 2 1 2 1 2 1 2 ... 
$ HeapFreePercent: int 42 49 41 49 41 49 41 49 41 49 ... 
+0

पर कॉल करने से बचाता है 'डेटा 1 प्रकार' क्या डेटा प्रकार है? कृपया अपने प्रश्न में 'str (P1)' के परिणाम पेस्ट करें। – Andrie

+0

@Andrie, मैंने एक्स संरचना –

+0

के बारे में जानकारी के साथ प्रश्न अपडेट किया है, शायद आप एक कारक के रूप में '$ Time' नहीं चाहते हैं। इसे 'POSIXct' ऑब्जेक्ट' जैसी उपयोगी चीज़ में कनवर्ट करें और फिर आर इसके साथ कुछ और अधिक उपयुक्त करेगा। –

उत्तर

8

@GavinSimpson पहले से ही कैसे आपकी समस्या को ठीक करने के लिए पर टिप्पणी की। यह एक टिप्पणी होनी चाहिए, लेकिन बहुत लंबा है। मैं बस समझाता हूं कि आपके डेटा के साथ आपके मूल रूप में क्या हुआ था।

आप factor प्रकार के डेटा की साजिश कर रहे हैं। नतीजतन जब आप plot फ़ंक्शन को कॉल करते हैं, तो S3 विधि प्रेषण plot.factor का आह्वान करेगा।

यदि आप ?plot.factor के लिए सहायता पढ़ते हैं तो आप देखेंगे कि आपके द्वारा प्राप्त प्लॉट का प्रकार भी आपके दूसरे पैरामीटर के प्रकार पर निर्भर करता है। चूंकि यह भी एक कारक है, अंततः आपकी साजिश spineplot द्वारा खींची जाती है। इस प्रकार आपके type="l" को अनिवार्य रूप से अनदेखा किया जाता है। रंग, लाल, हालांकि में साजिश रची है ...

रिवर्स अपने डेटा इंजीनियरिंग, मैं कुछ इस तरह मिलती है:

X <- data.frame(
    Time = sort(sample(letters, 100, replace=TRUE)), 
    Server = sample(c("PortalServer1", "PortalServer2"), 100, replace=TRUE), 
    HeapFreePercent = runif(100)) 
str(X) 

P1 <- subset(X, Server=="PortalServer1") 
P2 <- subset(X, Server=="PortalServer2") 

plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

enter image description here

+0

धन्यवाद :) –

0

एक कुछ हद तक hacky समाधान लेकिन यह सभी कारकों के लिए काम करता नहीं बस टाइमस्टैम्प।

बदलें

plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

plot(P1$Time, P1$HeapFreePercent, type="n") 
lines(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

लिए इस कोड को पहले कोई वास्तव में डेटा, बस अक्ष खींचता है। फिर यह lines का उपयोग कर वास्तविक डेटा खींचता है, जो plot.factor

संबंधित मुद्दे