2012-10-16 12 views
14

द्वारा ggplot2 में विशिष्ट भरने वाले रंग सेट करें हाय हाय चार्ट को समायोजित करना चाहता था ताकि शून्य से नीचे के मान लाल रंग में भरे हुए हों और ऊपर वाले लोग गहरे नीले रंग में हों। मैं ggplot2 के साथ यह कैसे कर सकता हूं?साइन

mydata = structure(list(Mealtime = "Breakfast", Food = "Rashers", `2002` = 9.12, 
          `2003` = 9.5, `2004` = 2.04, `2005` = -20.72, `2006` = 18.37, 
          `2007` = 91.19, `2008` = 94.83, `2009` = 191.96, `2010` = -125.3, 
          `2011` = -18.56, `2012` = 63.85), .Names = c("Mealtime", "Food", "2002", "2003", "2004", "2005", "2006", "2007", "2008","2009", "2010", "2011", "2012"), row.names = 1L, class = "data.frame") 
x=ggplot(mydata) + 
    aes(x=colnames(mydata)[3:13],y=as.numeric(mydata[1,3:13]),fill=sign(as.numeric(mydata[1,3:13]))) + 
    geom_bar(stat='identity') + guides(fill=F) 
print(x) 

उत्तर

18

जिस तरह से आप अपने डेटा संरचना है कि यह कैसे ggplot2 में होना चाहिए नहीं है:

require(reshape) 
mydata2 = melt(mydata) 

बेसिक barplot:

ggplot(mydata2, aes(x = variable, y = value)) + geom_bar() 

enter image description here

चाल अब जोड़ने के लिए है एक अतिरिक्त चर जो निर्दिष्ट करता है कि मान ऋणात्मक है या पी ostive:

mydata2[["sign"]] = ifelse(mydata2[["value"]] >= 0, "positive", "negative") 

..और ggplot2 (रंग के लिए scale_fill_* के साथ संयुक्त) करने के लिए उपयोग है कि कॉल में:

ggplot(mydata2, aes(x = variable, y = value, fill = sign)) + geom_bar() + 
    scale_fill_manual(values = c("positive" = "darkblue", "negative" = "red")) 

enter image description here

+1

शानदार। धन्यवाद। scale_fill_manual जो मैं खोज रहा था। मैं डेटा पिघलने और रिक्त करने के बारे में अपना मुद्दा लेता हूं। मैं dput() के साथ आलसी था। यह अभी भी मेरे क्लंकियर कोड '+ scale_fill_manual (मान = सी (" 1 "=" गहरा नीला "," - 1 "=" लाल ") के साथ काम करता है) 'लेकिन बहुत कम सुलभ विश्लेषण के लिए बनाता है। –

+0

आप आमतौर पर सौंदर्यशास्त्र के रूप में वैक्टर का उपयोग नहीं करते हैं। सौंदर्यशास्त्र साजिश में अक्षों के लिए आपके चर (डेटा.फ्रेम में कॉलम) का मैपिंग है। –

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