मैं एक ही चर (सर्वेक्षण प्रतिक्रियाओं के आधार पर) पर गिनती के प्लॉटिन में कुछ बार चार्ट बना रहा हूं।

मैं वर्तमान में इस कोड का उपयोग कर रहा हूं:

(ggplot(df, aes ('age_cat3')) +
geom_bar(color='#F6F6F6', fill='#0C475B') +
theme_minimal() +
xlab("") +
ggtitle('Age distribution in total sample'))

और यह पैदा करता है:

enter image description here

मैं चाहूंगा कि प्रत्येक बार का एक अलग रंग हो। मुझे पता है कि मैं इसे [भरें = "age_cat3"] जोड़कर कर सकता हूं, इसलिए:

(ggplot(df, aes ('age_cat3', fill='age_cat3')) +
geom_bar() +
theme_minimal() +
xlab("") +
ggtitle('Age distribution in total sample'))

और यह पैदा करता है:

enter image description here

इस समाधान के साथ दो मुद्दे हैं:

  1. वहाँ अब एक किंवदंती है, जिसे मैं "scale_color_discrete(guide=False)" से हटा नहीं सकता

  2. मैं रंग या रंग विषय को नियंत्रित नहीं कर सकता।

किंवदंती को हटाने पर कोई सलाह बहुत अच्छी होगी, लेकिन आदर्श रूप से, "भरने" का उपयोग किए बिना सलाखों के रंग को बदलने का कोई तरीका बहुत अच्छा होगा।

(इसके अलावा, खेद है कि छवियां इतनी बड़ी निकलीं। मुझे पूरा यकीन नहीं है कि छोटी छवियां कैसे संलग्न करें)

प्रतिलिपि प्रस्तुत करने योग्य डेटा:

df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8 , 9, 10],
                   'age_cat3': [15-24, 15-24, 25-34, 35-44, 35-44, 35-44, 35-44, 45-59, 45-59, 60+]}
1
Jameson 22 अक्टूबर 2020, 17:27

2 जवाब

सबसे बढ़िया उत्तर

आप लेजेंड को geom/layer पैरामीटर show_legend=False के साथ बंद कर सकते हैं और fill रंग सेट करने के लिए आप मैन्युअल स्केल का उपयोग कर सकते हैं।

(ggplot(...)
...
+ geom_bar(show_legend=False)
+ scale_fill_manual(values=['red', 'blue', 'green', 'cyan', 'violet', '#AABBCC'])
)
2
has2k1 22 अक्टूबर 2020, 22:47
दोनों उत्तर एकदम सही हैं! बहुत - बहुत धन्यवाद।
 – 
Jameson
26 अक्टूबर 2020, 14:02

किंवदंती को हटाने का एक अन्य विकल्प है:

(ggplot(...)
...
+ theme(legend_position = element_blank())

या इसे किसी अन्य स्थिति में रखें:

(ggplot(...)
...
+ theme(legend_position = 'top')

scale_fill_manual रंग मानों को मैन्युअल रूप से शामिल करने का सबसे अच्छा और शायद एकमात्र तरीका है।

1
Guilherme Parreira 4 मई 2021, 20:55