2016-01-06 15 views
5

मैं आर में साजिश का उपयोग करके एक बार साजिश उत्पन्न करने की कोशिश कर रहा हूं। सलाखों को मूल्य से क्रमबद्ध किया जाना चाहिए और बार के दो वर्ग हैं, जिन्हें मैं अलग-अलग रंग करना चाहता हूं। हालांकि, जब मैं रंग जोड़ता हूं, तो सलाखों को समूहों के भीतर क्रमबद्ध दो समूहों में विभाजित किया जाता है। इस बात पर कोई संकेत है कि मैं उन्हें एक समूह में कैसे रख सकता हूं?प्लॉटली बार चार्ट में रंग

plotting.df = data.frame(names=c("a", "b", "c", "d", "e", "f", "g"), 
         value=c(1.9468656, 1.3867055, 1.0433950, 0.8949743, 0.3714826, 0.3605037, 0.3003954), 
         label=c("y", "n", "y", "n", "n", "n", "n"), 
         color=c("red", "black", "red", "black", "black", "black", "black")) 
plotting.df$names = factor(as.character(plotting.df$names), levels=as.character(plotting.df$names)[order(plotting.df$value, decreasing=TRUE)]) 
plotting.df = plotting.df[order(plotting.df$value, decreasing=TRUE), ] 
plot_ly(plotting.df, type="bar", x=names, y=value, 
     name="Comp a", 
     hoverinfo="text", text=c(paste("Name:", plotting.df$names, 
             "<br>Value:", signif(plotting.df$value, digits=3), 
             "<br>Label:", plotting.df$label)), 
     color=color) 

और एक उदाहरण:

enter image description here

+1

दिलचस्प सवाल, लेकिन चूंकि आप रनिफ़() का उपयोग कर रहे हैं, इसलिए आपको बीज सेट करना चाहिए क्योंकि हम आपकी साजिश – MLavoie

+0

अच्छा बिंदु पुन: पेश नहीं कर पाएंगे। मैंने रनिफ़ को वास्तविक मानों से बदल दिया। सटीक मूल्य उस मामले में कोई फर्क नहीं पड़ता। –

उत्तर

1

यह एक हैक का एक सा है, लेकिन यह 'हल' विशिष्ट मुद्दा पूछा

यहाँ मेरी कोड है।

अपने डेटा फ्रेम के साथ शुरू:

library(tidyr) 

    plotting.df2 <- plotting.df %>% 
     spread(names, value, fill = NA) %>% 
     gather("names", "value", a:g) 

    plot_ly(plotting.df2, 
     type="bar", 
     x=names, 
     y=value, 
     name="Comp a", 
     hoverinfo="text", 
     color=color, 
     text=c(paste("Name:", plotting.df$names, 
        "<br>Value:", signif(plotting.df$value, digits=3), 
        "<br>Label:", plotting.df$label))) %>% 
    layout(barmode = "stack") 

मूल रूप से इस पद्धति का नाम और रंग के प्रत्येक संयोजन, NAS से भर के लिए एक डेटा बिंदु पैदा कर रही है। फिर ये साजिश में ढेर हैं।

यदि आप वास्तव में बाद में डेटा मूल्यों को ढेर करना चाहते हैं तो यह 'समाधान' बेकार है, लेकिन उम्मीद है कि यह हैक कम से कम अस्थायी रूप से किसी भी समान छेद से बाहर निकल जाएगा।

संपादित करें: यह उदाहरण plotly 3.x.x का उपयोग करता है। यदि आप plotly 4.x.x या ऊपर का उपयोग करते हैं, तो यह कोड इस तरह काम नहीं कर सकता है। अधिक जानकारी के लिए यहां देखें: https://www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/

+0

समाधान के लिए धन्यवाद। यह वास्तव में '%>% लेआउट (बार्मोड =" स्टैक ") के बिना समान दिखता है। लेकिन मुझे अब के लिए कोई अन्य डेटा ढेर करने की जरूरत नहीं है –

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