नीचे और क्षैतिज के लिए ggplot2 किंवदंती


109

मैं प्लॉट के निचले भाग में एक ggplot2 किंवदंती को कैसे स्थानांतरित कर सकता हूं और इसे क्षैतिज रूप से बदल सकता हूं?

नमूना कोड:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend())

वांछित (अनुमानित) परिणाम: यहां छवि विवरण दर्ज करें


2
7 साल और 8 महीने के बाद, मैंने आखिरकार यह पता लगा लिया कि इस प्रश्न के लिए वांछित परिणाम कैसे प्राप्त करें :) दूसरे उत्तर के लिए नीचे स्क्रॉल करें।
आर्थर यिप

जवाबों:


146

यदि आप किंवदंती की स्थिति को स्थानांतरित करना चाहते हैं तो कृपया निम्नलिखित कोड का उपयोग करें:

library(reshape2) # for melt
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
    theme(legend.position="bottom")

यह आपको वांछित परिणाम देना चाहिए। नीचे लीजेंड


2
क्या आपको पता है कि तल पर एक निरंतर किंवदंती पट्टी खींचना संभव है? (इसलिए बीच में नहीं बल्कि शीर्ष पर संख्या के साथ)। धन्यवाद।
Janvb

3
वर्तमान के साथ ggplot, यह मुझे चेतावनी देता है 'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)। कार्य optsद्वारा प्रतिस्थापित theme
krlmlr

हां, मैं आशा करता हूं कि आंतरिक कामकाज में बदलाव होगाggplot
श्रेयस कार्णिक

10
मूल्यह्रास वस्तुओं का उपयोग करना बुरा है। आप इसे ठीक उसी तरह से थीम का उपयोग करके कर सकते हैं:+ theme(legend.position='bottom')
by0

दुर्भाग्य से संख्या और रंग अगल-बगल होने पर थोड़ी अस्पष्टता होती है; इस पर सुधार करने के लिए कई प्रयासों पर मेरा जवाब नीचे देखें।
आर्थर यिप

37

यहाँ वांछित परिणाम बनाने के लिए है:

library(reshape2); library(tidyverse)
melt(outer(1:4, 1:4), varnames = c("X1", "X2")) %>%
ggplot() + 
  geom_tile(aes(X1, X2, fill = value)) + 
  scale_fill_continuous(guide = guide_legend()) +
  theme(legend.position="bottom",
        legend.spacing.x = unit(0, 'cm'))+
  guides(fill = guide_legend(label.position = "bottom"))

2019-12-07 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया


संपादित करें: अब इन अपूर्ण विकल्पों की आवश्यकता नहीं है, लेकिन मैं उन्हें संदर्भ के लिए यहां छोड़ रहा हूं।

दो अपूर्ण विकल्प जो आपको वही नहीं देते हैं जो आप के लिए पूछ रहे थे, लेकिन बहुत करीब (कम से कम रंगों को एक साथ रखा जाएगा)।

library(reshape2); library(tidyverse)
df <- melt(outer(1:4, 1:4), varnames = c("X1", "X2"))
p1 <- ggplot(df, aes(X1, X2)) + geom_tile(aes(fill = value))
p1 + scale_fill_continuous(guide = guide_legend()) +
 theme(legend.position="bottom", legend.direction="vertical")

p1 + scale_fill_continuous(guide = "colorbar") + theme(legend.position="bottom")

2019-02-28 को रेप्रेक्स पैकेज (v0.2.1) द्वारा बनाया गया


जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
रोहित गुप्ता

मैंने अब दो अपूर्ण समाधान प्रदान करने के लिए अपना उत्तर बढ़ाया है
आर्थर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.