2010-03-30 6 views
8

मैं निम्नलिखित सरल डेटाकैसे ggplot हिस्टोग्राम में भरने के रंग को परिभाषित करने के?

data <- structure(list(status = c(9, 5, 9, 10, 11, 10, 8, 6, 6, 7, 10, 
10, 7, 11, 11, 7, NA, 9, 11, 9, 10, 8, 9, 10, 7, 11, 9, 10, 9, 
9, 8, 9, 11, 9, 11, 7, 8, 6, 11, 10, 9, 11, 11, 10, 11, 10, 9, 
11, 7, 8, 8, 9, 4, 11, 11, 8, 7, 7, 11, 11, 11, 6, 7, 11, 6, 
10, 10, 9, 10, 10, 8, 8, 10, 4, 8, 5, 8, 7), statusgruppe = c(0, 
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, NA, 0, 1, 0, 1, 
0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 
1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 
1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0)), .Names = c("status", 
"statusgruppe"), class = "data.frame", row.names = c(NA, -78L 
)) 
से है कि मैं एक हिस्टोग्राम करना चाहते हैं

:

ggplot(data, aes(status))+ 
geom_histogram(aes(y=..density..), 
    binwidth=1, colour = "black", 
    fill="white")+ 
theme_bw()+ 
scale_x_continuous("Staus", breaks=c(min(data$status,na.rm=T), median(data$status, na.rm=T), max(data$status, na.rm=T)),labels=c("Low", "Middle", "High"))+ 
scale_y_continuous("Percent", formatter="percent") 

अब - मैं डिब्बे मूल्य के अनुसार colou लेने के लिए चाहते हैं - जैसे कि मूल्य के साथ डिब्बे> 9 अंधेरे भूरे हो जाते हैं - बाकी सब कुछ हल्का भूरा होना चाहिए।

मैंने fill=statusgruppe, scale_fill_grey(breaks=9) आदि के साथ प्रयास किया है - लेकिन मैं इसे काम नहीं कर सकता। कोई विचार?

उत्तर

11

उम्मीद है कि इस आरंभ करना चाहिए:

ggplot(data, aes(status, fill = ..x..))+ 
    geom_histogram(binwidth = 1) + 
    scale_fill_gradient(low = "black", high = "white") 

ggplot(data, aes(status, fill = ..x.. > 9))+ 
    geom_histogram(binwidth = 1) + 
    scale_fill_grey() 
+1

धन्यवाद है - मैं तो जैसे legendlabel बदल scale_fill_grey ("नाम", टूट जाता है = c (, गलत सही), लेबल (भावी पीढ़ी के लिए) = सी ("यह", "वह"))। हालांकि एक और सवाल: - क्या यह ..x ..> 7, ..x ..> 9 (अगर मुझे केवल दो की बजाय तीन श्रेणियां चाहिए?) – Andreas

+1

उस मामले में, 'कट' का उपयोग करें । – hadley

+2

धन्यवाद! - अगर कोई और दिलचस्पी लेता है, तो मैंने यह किया है: fill = cut (.. x .., c (1,6,10))), बिनविड्थ = 1, रंग = "काला", ) + scale_fill_grey ( "नाम", टूट जाता है = c ("(1,6]", "(6,10]", एनए), लेबल = c ("कम", "Midle", "उच्च")) + – Andreas

0

fill=..count.. या fill=I(..count..>9) का उपयोग y=..density.. के ठीक बाद कैसे करें? आपको किंवदंती शीर्षक और लेबल थोड़ा सा टिंकर करना है, लेकिन यह रंग सही हो जाता है।

संपादित करें:
ऐसा लगता है मैं आपके सवाल का एक सा गलत समझा। आप इस आधार पर रंग निर्धारित करना चाहते हैं x- निर्देशांक, आप ..x.. स्वत: चर इसी तरह उपयोग कर सकते हैं।

+0

अच्छे विचार के लिए धन्यवाद! हालांकि - गिनती वह नहीं है जिसे मैं दिखाने की कोशिश कर रहा हूं। मैं बिन-बार का रंग उस बिन द्वारा प्रतिनिधित्व मूल्य पर निर्भर करता हूं (गणना नहीं)। यानी 9 से अधिक मायने रखता है, लेकिन 9 से ऊपर के मानों के साथ नहीं। मुझे नहीं लगता कि मैं इसे समझाने में अच्छा हूं: -/ शायद यह मेरे धुरी लेबल हैं जो मुझे भ्रमित करते हैं। क्या मैं चाहता लेबल की दाईं ओर डिब्बे रंग करने के लिए "मध्यम" – Andreas

0
scale_manual के बारे में

क्या? हैडली की साइट पर link है। मैंने इस फ़ंक्शन का उपयोग बॉक्सप्लॉट के लिए उपयुक्त भरने के रंग को सेट करने के लिए किया है। सुनिश्चित नहीं हैं कि अगर यह, हालांकि हिस्टोग्राम के साथ काम करेंगे ...

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