2015-02-12 10 views
7

मैं htmlwidgetdygraphs for R के साथ काम कर रहा हूं। मेरी श्रृंखला लगभग 0 से 150,000 तक की दूरी तक फैली हुई है।आर-कॉमा में हजारों स्थान अलग-अलग डिग्राफ लेबल कैसे प्रारूपित करें?

मैंने dyOptions(labelsKMB = "K") का उपयोग करने का प्रयास किया है - यह प्रारूप वाई-अक्ष 0K, 20K, 40K, ... के रूप में - हालांकि, परिणामस्वरूप, किंवदंती को गोलाकार मानों के साथ भी स्वरूपित किया गया है - उदा। 22K, 42K, etc.

मुझे पता करना चाहते हैं तो नीचे दिए संभावित कर रहे हैं और उन्हें कैसे करने के लिए:

  1. स्वरूप हजारों में y- अक्ष, लेकिन वास्तविक (गैर गोल) मूल्यों के रूप में किंवदंती छोड़?
  2. y-axis और किंवदंती पर या तो दोनों (या दोनों) के लिए अल्पविराम से अलग प्रारूप का उपयोग करें? वाई-अक्ष पर 10000 प्रदर्शित करने के बजाए, इसे 10,000 के रूप में स्वरूपित किया गया है - इसी तरह, 2523 जैसे पौराणिक कथाओं में वास्तविक मान 2,523 के रूप में स्वरूपित हैं।

मैं इसे एक इंटरैक्टिव RMarkdown दस्तावेज़ में दबा रहा हूं। शायद कस्टम सीएसएस ऐसा करने का एक तरीका है?

उत्तर

8

आप एक्स अक्ष के लेबल को स्वतंत्र रूप से सेट करने के लिए एक विशिष्ट जावास्क्रिप्ट फ़ंक्शन निर्दिष्ट कर सकते हैं।

library(dygraphs) 
library(htmlwidgets) 

nhtempBig<-nhtemp*500 
nhtempBig 

valueFormatter<-"function formatValue(v) { 
var suffixes = ['', 'K', 'M', 'G', 'T']; 
    if (v < 1000) return v; 
    var magnitude = Math.ceil(String(Math.floor(v)).length/3-1); 
    if (magnitude > suffixes.length - 1) 
    magnitude = suffixes.length - 1; 
    return String(Math.round(v/Math.pow(10, magnitude * 3), 2)) +suffixes[magnitude]}" 




dygraph(nhtempBig, main = "New Haven Temperatures") %>% 
    dyAxis("y", label = "Temp (F)", valueRange = c(0, 150000),axisLabelFormatter=JS(valueFormatter)) %>% 
    dyOptions(axisLineWidth = 1.5, fillGraph = TRUE, drawGrid = FALSE) 

मैं सिर्फ एक डमी समारोह अक्ष लेबल बदलने के लिए बना है, कथा एक ही रहना चाहिए: उदाहरण के लिए, आप निम्न तरीके से dygraph डेमो के y- अक्ष को संशोधित कर सकते है।

संपादित करें: एक स्वरूपण समारोह, dygraphexample

+0

+1 आह, नहीं पता था आप जे एस छिड़क कर सकते हैं भर। मैं जो कुछ करने जा रहा था वह इसके करीब कुछ है: 'axisLabelFormatter = JS ("function (x) {return x.toString()। (/ (\\ d) (? = (\\ d {3}) + (= ?! \\ डी))/जी, '$ 1,')} ") '- मैं यह देखने के लिए थोड़ा अनुत्तरित छोड़ने जा रहा हूं कि दूसरों के पास और विचार हैं या नहीं। – JasonAizkalns

+0

निश्चित रूप से, मैंने 'डाइग्राफ' उदाहरणों में से एक में एक फ़ंक्शन जोड़ा जो हजारों आदि के बाद के जोड़ों को जोड़ता है। – NicE

1

में से एक एक पूर्ण उदाहरण से मेरी टिप्पणी पर विस्तार से संशोधित कहा:

library(dygraphs) 
library(htmlwidgets) 
FUNC_JSFormatNumber <- "function(x) {return x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}" 
dygraph(ldeaths) %>% 
    dyAxis("y", axisLabelFormatter=JS(FUNC_JSFormatNumber), valueFormatter=JS(FUNC_JSFormatNumber)) 
संबंधित मुद्दे