2014-10-24 5 views
5

मैं प्रकार बड़े SpatialPointsDataFrameST2 और ST10 नाम की दो वस्तुओं की है। वे एक ही स्रोत से आते हैं। वे के साथ समस्याओं के बिना दोनों की साजिश:ggplot geum_point में त्रुटि "पंक्तियों की भिन्न संख्या को इंगित करता है" त्रुटि देता है, जबकि यह सत्य नहीं है - डीबग कैसे करें?

plot(st2) 

या

plot(st10) 

लेकिन मैं उन्हें ggmap और ggplot साथ प्लॉट करने के लिए चाहते हैं। मैं इस तरह एक सरल कोड के साथ ST2 के लिए ऐसा कर सकते हैं:

map <- get_map(location = 'Poznań', zoom = 12) 
ggmap(map) + geom_point(aes(x [email protected][,1], y = [email protected][,2])) 

लेकिन जब यह ST10 की बात आती है मैं एक त्रुटि मिलती है:

Error in data.frame(x = c(16.910848618, 16.910863876, 16.910913467, 16.910936356, : 
arguments imply differing number of rows: 53885, 4 

मैं लंबाई के साथ मूल्यों की जाँच() :

> length([email protected][,1]) 
[1] 53885 
> length([email protected][,2]) 
[1] 53885 

मैं उन्हें सारांश()

+०१२३५१६४१०६१ के साथ जांच
> summary([email protected][,1]) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    16.84 16.88 16.91 16.91 16.91 16.99 
> summary([email protected][,2]) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
    52.35 52.41 52.46 52.44 52.46 52.46 

क्या गलत है? मेरे पास उन 20 एसपी डेटा फ्रेम हैं और कुछ साजिश अच्छी तरह से ऊपर उल्लिखित त्रुटि देते हैं ... यह अंक

से संबंधित नहीं है क्या गलत हो सकता है? या शायद कोई मुझे कुछ सुझाव दे सकता है कि मैं इसे कैसे डिबग कर सकता हूं?

+0

आप में 'उदाहरण का अवलोकन करते हैं? ggmap' तो हो सकता है वहाँ सौंदर्यशास्त्र का एक उदाहरण किसी भी' से एक्स = colname' अन्य वाक्य रचना जहां 'colname' एक चर के नाम _just_ है द्वारा मैप किए जा रहे नहीं है कि यदि आप किसी अन्य डेटा स्रोत से अंक जोड़ना चाहते हैं, तो आप 'geom_point (data = ..., aes())' – joran

+0

जैसे कुछ करेंगे ठीक है ... मैंने इसे ऐसा करने का प्रयास किया: 'geom_point (data = data.frame (lat = st10 @ coords [, 1], lon = lat = st10 @ coords [, 2]), aes()) 'और यह एक कामकाज के रूप में काम किया। लेकिन मैं अभी भी सोच रहा हूं कि यह क्यों है ** st2 ** के साथ जरूरी नहीं है? वे ggmap के लिए अलग कैसे हैं? फिर भी - धन्यवाद! – mrz

+0

आप जो कर रहे थे वह केवल काम कर रहा था क्योंकि आप भाग्यशाली थे। 'एईएस() 'अपने तर्कों का कुछ विशेष मूल्यांकन करता है जो कि यदि आप अपने नियमों से नहीं खेलते तो तोड़ सकते हैं। 'एईएस()' का उद्देश्य डेटा फ्रेम में कॉलम के नामों का मूल्यांकन करना हमेशा होता है जिसे आप स्पष्ट रूप से उस परत तक पास करते हैं। '@' या '$' या '[' _ever_ 'aes()' के अंदर उपयोग न करें। – joran

उत्तर

2

मुझे एक नया डेटा फ्रेम बनाकर इसके आसपास मिल गया।

tlData=data.frame(x=c(0,100000),y=c(0,1000000) 
ggplot(otherdf,aes(x=X,y=Y)+geom_point(alpha=0.1)+geom_line(data=tlData,aes(x=x,y=y),color='red') 

ऐसा नहीं है कि ggplot लगता है अब और नहीं पसंद, डेटा-कम geom घटक के रूप में पूर्व के संस्करण मैं प्रयोग किया जाता का उपयोग कर एईएस (x = ग (0,100000), y = ग के साथ पूरी तरह ठीक था (0,100000)।

+1

ऐसा जरूरी नहीं है कि आपको ऐसा काम करना पड़े, लेकिन यह ऐसा +1 करता है – chao

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