मैं एक स्टैक्ड बार चार्ट बनाना चाहता हूं लेकिन मैं चाहता हूं कि रंग गिनती के आधार पर तय किए जाएं। उदाहरण के लिए, यदि मेरे पास 5 बार हैं और प्रत्येक बार में 3 श्रेणियां हैं, तो बार चार्ट को रंगने का डिफ़ॉल्ट तरीका श्रेणी के अनुसार है। (उदाहरण के लिए, श्रेणी 1 लाल है, श्रेणी 2 नीली है और श्रेणी 3 हरी है)। हालांकि, मैं जो चाहता हूं वह है: यदि बार 1 के लिए, श्रेणी 1 में सबसे ज्यादा गिनती है, तो वह लाल होगा। इसी तरह, यदि बार २ के लिए, श्रेणी ३ की संख्या सबसे अधिक है, तो मैं चाहता हूँ कि दूसरी बार की श्रेणी ३ लाल रंग की हो। क्या मेरे लिए ऐसा करने का कोई तरीका है? मैं आर/एक्सेल/नंबर/किसी अन्य सॉफ्टवेयर का उपयोग कर सकता हूं।

मेरे पास वर्तमान में यही है, और मैं चाहता हूं कि रंग आवृत्ति द्वारा निर्धारित किया जाए (लगभग एक हीटमैप की तरह)

-2
Kartik Shah 14 अगस्त 2020, 09:43

1 उत्तर

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

यह आर में सीधा है।

अगर हमारे पास ऐसा कुछ डेटा है:

set.seed(69)
df <- data.frame(category = sample(LETTERS, 200, TRUE))

हम क्या कर सकते हैं:

library(ggplot2)

ggplot(df, aes(x = category)) + 
  geom_bar(aes(fill = ..count..), color = "black") +
  scale_fill_gradientn(colours = c("forestgreen", "gold", "red"))

enter image description here


संपादित करें

ओपी की पूरक जानकारी से ऐसा लगता है कि डेटा कुछ इस तरह है:

set.seed(69)
data <- data.frame(Question = rep(LETTERS[1:5], each = 5),
                   Response = rep(c("Strongly disagree", "Disagree", "Neutral",
                                  "Agree", "Strongly agree"), 5),
                   Frequency = as.vector(replicate(5, {
                                x <- sample(10:30, 5, TRUE); x / sum(x)})))

इस मामले में, हम ऐसा कुछ कर सकते हैं:

ggplot(data = data, aes(y = Question, x = Frequency)) + 
  geom_col(aes(fill = Frequency)) +
  geom_text(aes(label = stringr::str_wrap(Response, 10)), 
            position = position_stack(vjust = 0.5)) +
  scale_fill_gradientn(colours = c("forestgreen", "gold", "red"))

enter image description here


संपादित करें

ओपी द्वारा एक और अनुरोध ...

ggplot(data = data, aes(y = Question, x = Frequency)) + 
  geom_col(aes(fill = Question, alpha = Frequency)) +
  geom_text(aes(label = stringr::str_wrap(Response, 10)), 
            position = position_stack(vjust = 0.5)) +
  scale_fill_manual(values = c("deepskyblue4", "forestgreen", "gold", 
                                "orange", "red"),
                    name = "Question") +
  scale_alpha_continuous(guide = "none") +
  theme_minimal() +
  theme(panel.grid = element_blank())

enter image description here

2020-08-14 को reprex पैकेज द्वारा बनाया गया (v0.3.0)

1
Allan Cameron 14 अगस्त 2020, 13:38