मैं एक स्टैक्ड एरिया प्लॉट बनाना चाहता हूं। मेरा डेटा नीचे जैसा दिखता है:

data <- structure(list(value = c(3.84, 5.21, 51.16, 0, 7.58, 1.81, 6.74, 
28.27, 6.49, 5.9, 6.15, 0.08, 26.23, 23.76, 24.68, 19.97, 2.89, 
2.84, 4.05, 18.24, 46.83, 30.47, 29.17, 0, 0.15, 0.23, 29.18, 
24.24, 38.58, 21.82, 33.85, 27.23, 27.91, 30.03, 75.12, 5.25, 
6.02, 6.1, 8.62, 81.01, 23.97, 27.99, 19.64, 57.61, 22.22, 19.76, 
18.05, 36.94, 29.13, 20.75, 26.07), category = c("C", "C", "A", 
"B", "C", "C", "C", "A", "C", "C", "C", "A", "B", "B", "B", "B", 
"C", "C", "C", "B", "B", "B", "B", "C", "C", "C", "B", "B", "B", 
"B", "B", "B", "B", "B", "A", "B", "B", "B", "B", "A", "C", "C", 
"C", "A", "C", "C", "C", "A", "A", "C", "C"), date = structure(c(17041, 
17041, 17042, 17042, 17042, 17042, 17042, 17043, 17043, 17043, 
17043, 17044, 17044, 17044, 17044, 17044, 17044, 17044, 17044, 
17045, 17045, 17045, 17045, 17045, 17045, 17045, 17046, 17046, 
17046, 17046, 17047, 17047, 17047, 17047, 17048, 17048, 17048, 
17048, 17048, 17049, 17049, 17049, 17049, 17050, 17050, 17050, 
17050, 17051, 17051, 17051, 17051), class = "Date")), class = "data.frame", row.names = c(NA, 
-51L))

मैंने निम्नलिखित कोशिश की है:

data %>% ggplot() + geom_area(aes(date, value, fill = category), position = 'stack')

लेकिन यह मुझे देता है: यहां छवि विवरण दर्ज करें

मैंने stat = 'sum' जोड़ने का भी प्रयास किया है लेकिन यह न तो काम करता है। मैं क्या गलत कर रहा हूं?

0
jakes 9 अक्टूबर 2018, 17:40

1 उत्तर

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

जब आपके पास इस तरह का गन्दा डेटा होता है, तो ggplot के बाहर डेटा हेरफेर स्वयं करना सबसे अच्छा होता है। एक क्षेत्र प्लॉट प्राप्त करने के लिए, आपको प्रति दिन कई अवलोकनों को 1 मान में संक्षिप्त करना होगा और उन दिनों के लिए शून्य शामिल करना होगा जहां कोई अवलोकन नहीं है। आप इसके साथ कर सकते हैं

data %>% 
  mutate(category=factor(category)) %>% 
  group_by(date, category) %>% 
  summarize_all(sum) %>% 
  tidyr::complete(date, category, fill=list(value=0)) %>% 
  ggplot(aes(date, value, fill=category)) + 
    geom_area(position="stack")

enter image description here

1
MrFlick 9 अक्टूबर 2018, 18:23