2015-02-04 7 views
7

मैं fill.contour() के साथ बनाई गई इस आकृति को प्लॉट करना चाहता हूं, लेकिन ggplot2 में, मैं यह कैसे कर सकता हूं?आर प्लॉट full.contour() आउटपुट ggpplot2

मैं ggplot2 का उपयोग करना चाहता हूं क्योंकि ग्राफ़िंग सम्मेलन आसान हैं। कारण मैं full.contour() का उपयोग करना चाहता हूं क्योंकि मैंने geom_tile() और image.plot() की कोशिश की है और दोनों ने आउटपुट की तरह बहुत टाइल बनाया है, और मुझे full.contour() के समान आउटपुट की आवश्यकता है।

यह मेरा आंकड़ा है:

enter image description here

कोड:

डेटा की
library(akima) 

df <-read.table("Petra_phytoplankton+POM_xydata_minusNAs_noduplicates.txt",header=T) 
attach(df) 
names(df) 
fld <- with(df, interp(x = longitude, y = latitude, z = d13C)) 

filled.contour.ungeoreferenced <- 
    (filled.contour(x = fld$x, 
        y = fld$y, 
        z = fld$z, 
        color.palette = 
        colorRampPalette(c("blue", "green", "yellow", 
             "orange", "red")), 
        xlab = "Longitude", 
        ylab = "Latitude", 
        key.title = title(main = "d13C", 
            cex.main = 1))) 

स्निपेट:

latitude longitude d13C 
-65 -70 -27.7 
-61 150 -32.2 
-61 150 -28.3 
-60 116 -26.8 
-60 116 -24.7 
-47 38 -24.8 
-38 150 -20.5 
19 -65.7 -19.9 
19 -65.5 -18.5 
18 -60.7 -20 
18 -58.5 -18.2 
18 -57.8 -19 
17 -55.4 -18.6 
17 -50.8 -18 
17 -47.1 -18.3 
17 -45.5 -19.4 
16 -43.3 -17.9 
15 -40.7 -18.5 
14 -39.3 -19.9 
12 -36.7 -19.9 
12 -36.2 -19.9 
11 -34.4 -19.2 
10 -32 -18.5 
9 -30.3 -19.3 
8 -29.2 -19.4 
7 -26.6 -18.2 
7 -25.5 -19.3 
6 23.9 -20 
3 -21.3 -20.4 
+0

आपका डाटा झलकी डुप्लिकेट और कारणों में शामिल है 'इंटरप' सिरदर्द। इसके अलावा, आप 'डीएफ' क्यों संलग्न कर रहे हैं? – hrbrmstr

+0

मैं शायद किसी भी तरह से डुप्लीकेट से छुटकारा पा सकता हूं, लेकिन संलग्न करने के लिए - केवल इसलिए कि किसी ने मुझे ऐसा करने के लिए कहा था। तो मुझे नहीं करना चाहिए? – Roseanna

उत्तर

1

मैं ggplot2 website से उदाहरण ले लिया।

# Generate data 
library(reshape2) # for melt 
volcano3d <- melt(volcano) 
names(volcano3d) <- c("x", "y", "z") 

# Basic plot 
v <- ggplot(volcano3d, aes(x, y, z = z)) + 
    stat_contour(geom="polygon", aes(fill=..level..)) 

कहाँ x और y हैं अपने लंबे और अक्षांश और के रूप में आप की जरूरत z d13C

12

आप रंग tweak कर सकते हैं:

gdat <- interp2xyz(fld, data.frame=TRUE) 

ggplot(gdat) + 
    aes(x = x, y = y, z = z, fill = z) + 
    geom_tile() + 
    coord_equal() + 
    geom_contour(color = "white", alpha = 0.5) + 
    scale_fill_distiller(palette="Spectral", na.value="white") + 
    theme_bw() 

enter image description here

आप पिक्सेलेशन कम कर सकते हैं इंटरपोलेशन की घनत्व बढ़ाकर कुछ प्रसंस्करण समय की लागत पर:

fld <- with(df, interp(x = longitude, 
         y = latitude, 
         z = d13C, 
         xo = seq(min(longitude), max(longitude), length=400), 
         duplicate="mean")) 

और भी बिन चौड़ाई को कम करने:

ggplot(gdat) + 
    aes(x = x, y = y, z = z) + 
    geom_tile(aes(fill=z)) + 
    coord_equal() + 
    stat_contour(aes(fill=..level..), geom="polygon", binwidth=0.005) + 
    geom_contour(color="white", alpha=0.5) + 
    scale_fill_distiller(palette="Spectral", na.value="white") + 
    theme_bw() 

enter image description here

नोट: कि एक सभ्य डेस्कटॉप सिस्टम पर एक ध्यान देने योग्य कुछ सेकंड के लिए उपयोग करना चाहते जा रहा है। मेरी काफी मांसल मैकबुक पर प्रो यह था:

user system elapsed 
    6.931 0.655 8.153 
+0

धन्यवाद लेकिन जैसा कि मैंने सवाल में कहा था, मैंने पहले कोड को geom_tile की कोशिश की, और फिर आपके कोड के साथ, लेकिन यह बहुत पिक्सलेटेड है। इसे कम पिक्सलेट करने के लिए कोई विचार? चीयर्स – Roseanna

+0

हाय @ hbrmstr बहुत अच्छा जवाब है लेकिन मेरे पास एक और सवाल है। क्या इंटरपोलेटेड फ़ील्ड पर geom_path जोड़ना संभव है? मैं सफल नहीं हो सकता – pacomet

2

@ hrbrmstr के कम से कम उदाहरण पर नजर रखने के लिए, आप भी आप के लिए ggplot2 गणना "Z" हो सकता है:

library(ggplot2) 
ggplot(data = faithful, aes(x = eruptions, y = waiting)) + 
    stat_density2d(aes(colour = ..level.., fill = ..level..), geom = "polygon") 
संबंधित मुद्दे