2016-06-24 3 views
7

मैं एक scatterplot कि कुछ इस तरह दिखता बना रहा हूं:ग्डफ्लाई में साजिश के आदेश पर ठीक-ठीक नियंत्रण?

using DataFrames 
using Gadfly 
using ColorBrewer 
using Distributions 
colors = palette("Set1", 4) 
df1 = DataFrame(rand(Normal(0, 0.5), 1000,2)) 
df1[:x3] = :a 
df2 = DataFrame(rand(Normal(-0.25, 0.25), 500,2)) 
df2[:x3] = :b 
df3 = DataFrame(rand(Normal(0.25, 0.25), 500,2)) 
df3[:x3] = :c 
df4 = DataFrame(rand(Normal(0, 0.25), 500,2)) 
df4[:x3] = :d 
df = vcat(df1, df2, df3, df4) 
plot(df, x=:x1, y=:x2, color=:x3, Geom.point, Scale.color_discrete_manual(colors..., levels=[:b, :c, :d, :a]), 
Theme(highlight_width=0pt)) 

मैं अंक सामने से साजिश रची इस आदेश [:d, :b, :c, :a] ताकि :a में अंक की बड़ी संख्या वापस में हैं में वापस करने के लिए चाहते हैं। तो मुझे अपना वांछित परिणाम प्राप्त करने के लिए levels=[:b, :c, :d, :a] के रूप में आदेश निर्दिष्ट क्यों करना है। यहां विसंगति क्या है?

enter image description here

इसके अलावा, दिलचस्प है ऐसा लगता है जैसे कि आदेश क्या रंग इस्तेमाल कर रहे हैं पर निर्भर करता है !? ColorBrewer से अलग-अलग रंगों की कोशिश करने के कारण अलग-अलग ऑर्डरिंग परिणाम होते हैं, जो शायद एक बग है। प्रासंगिक मुद्दा: https://github.com/dcjones/Gadfly.jl/issues/858

उत्तर

1

एफडब्ल्यूआईडब्ल्यू, मैंने पूरी तरह से नियंत्रित करने की कोशिश की है कि कौन सी परतें Gadfly का उपयोग करते समय परतों को ओवरराइट करती हैं।

शायद यह करना भी मुश्किल है, क्योंकि कभी-कभी मेरा सटीक एक ही कोड दो बार चलाता है, दो अलग-अलग आंकड़े उत्पन्न करता है, जिसमें ऑर्डर जिसमें परत एक और परत को ओवरराइट करती है, स्पष्ट रूप से यादृच्छिक रूप से बदल जाती है। यह कम से कम होता है जब मैं आउटपुट आकृति को Gadfly.draw(PS(file, size...), p) के माध्यम से एक पोस्टस्क्रिप्ट फ़ाइल में भेजता हूं, जो मैं आमतौर पर करता हूं।

बेशक यह भविष्य में सुधार हो सकता है। मैं वर्तमान में विंडोज 10, 64 बिट्स के तहत जूलिया 0.5.0 में Gadfly 0.5.2 का उपयोग करता हूं।

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