मुझे वास्तव में फ्लेक्सडैशबोर्ड और शाइनीडैशबोर्ड में आर के valueboxes का स्वच्छ रूप पसंद है:

enter image description here

क्या एक स्थिर रिपोर्ट के लिए समान आउटपुट आसानी से उत्पन्न करने के लिए परिचित टूल (यानी ggplot2) का उपयोग करके कोई पैकेज या नुस्खा है? उदाहरण के लिए, RMarkdown से बुना हुआ PDF दस्तावेज़ में

संपादित करें:

कुछ कोशिशों के बाद मुझे ggplot2 (नीचे उत्तर) का उपयोग करके कुछ प्रयोग करने योग्य मिला। अन्य उत्तरों का स्वागत है!

9
HAVB 4 नवम्बर 2017, 01:33

2 जवाब

ggplot2 के geom_tile का उपयोग रंगीन आयत बनाने के लिए किया जा सकता है, और फिर geom_text का उपयोग लेबल/जानकारी जोड़ने के लिए किया जा सकता है। shiny में infobox / valuebox का उपयोग करने में आसानी की तुलना में समाधान क्लिंक है, लेकिन यह करेगा।

library(ggplot2)

df <- data.frame(
    x = rep(seq(2, 15, 6.5), 2),
    y = c(rep(2,3), rep(6.5, 3)),
    h = rep(4, 6),
    w = rep(6, 6),
    info = c("78%\nmeaningless plots",
             "+10K\nhours wasted",
             "8/10\nzombies prefer brains",
             "ALL\ndogs go to heaven",
             "6\ninfoboxes",
             "< 0.5\ntarget pvalue"),
    color = factor(1:6)
)


ggplot(df, aes(x, y, height = h, width = w, label = info, fill = color)) +
    geom_tile() +
    geom_text(color = "white", fontface = "bold") +
    coord_fixed() + 
    scale_fill_brewer(type = "qual",palette = "Dark2") +
    theme_void() +
    guides(fill = F)

enter image description here

7
HAVB 5 नवम्बर 2017, 01:11

अपने डिज़ाइन का उपयोग करके उसी व्यवस्था में डेटा फ़्रेम प्रदर्शित करने के लिए अपने समाधान का विस्तार करना, जैसा कि यह कंसोल पर प्रिंट करेगा:

डेटा फ्रेम:

    mydata = data.frame(x1 = c(1,2,3,4,5),
                        x2 = c(9,8,7,6,5),
                        label = c("description a",
                                  "description b",
                                  "description c",
                                  "description d",
                                  "description e"))

के रूप में प्रदर्शित करने का इरादा है:

1  9 description a
2  8 description b
3  7 description c
4  6 description d
5  5 description e

निम्नलिखित के साथ किया:

ht = 3
wd1 = 3
wd2 = 9
gap = 0.5
nc = ncol(mydata)
nr = nrow(mydata)

x = rep(c(seq(0,(nc-2)*(wd1+gap), wd1+gap), (nc-2)*(wd1+gap) + gap + 0.5*(wd2+wd1)), nr)
y = rep(seq(0,(nr-1)*(ht+gap), ht+gap), nc) %>% sort()
h = rep(ht, nr * nc)
w = rep(c(rep(wd1, nc-1), wd2), nr)
info = as.vector(t(as.matrix(mydata[nr:1,])))

df = data.frame(x = x, y = y, h = h, w = w, info = info)

ggplot(df, aes(x, y, height = h, width = w, label = info)) +
  geom_tile() +
  geom_text(color = "white", fontface = "bold") +
  coord_fixed() + 
  scale_fill_brewer(type = "qual",palette = "Dark2") +
  theme_void() +
  guides(fill = F)

निम्नलिखित परिणाम के साथ: परिणामी Valuebox-like प्लॉट

2
Simon.S.A. 22 मई 2018, 01:30