मैं this method का उपयोग करके 4 ggplot choropleth मानचित्रों के बाएं और दाएं किनारों को संरेखित करने का प्रयास कर रहा हूं। हालांकि मैं ऐसा करने में असमर्थ हूं।ggplot choropleth के किनारों को संरेखित करें (किंवदंती शीर्षक भिन्न होता है)
मूल साजिश: भूखंड किनारों संरेखित करने के लिए
library(ggplot2); library(gridExtra)
crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
states_map <- map_data("state")
plot1 <- ggplot(crimes, aes(map_id = state)) +
geom_map(aes(fill = Murder), map = states_map) +
expand_limits(x = states_map$long, y = states_map$lat) +
scale_fill_gradient(low="white", high="darkgreen", name="Really Long Name 1")
plot2 <- plot1 + scale_fill_gradient(name="Really Long Name 2 and then some")
plot3 <- plot1 + scale_fill_gradient(name="Short 3")
plot4 <- plot1 + scale_fill_gradient(name="Really Long Name 4")
grid.arrange(plot1, plot3, plot2, plot4, ncol = 2)
प्रयास (एक ही परिणाम):
p1 <- ggplotGrob(plot1)
p2 <- ggplotGrob(plot2)
p3 <- ggplotGrob(plot3)
p4 <- ggplotGrob(plot4)
maxWidth <- grid::unit.pmax(p1$widths[2:3], p2$widths[2:3], p3$widths[2:3], p4$widths[2:3])
p1$widths[2:3] <- as.list(maxWidth)
p2$widths[2:3] <- as.list(maxWidth)
p3$widths[2:3] <- as.list(maxWidth)
p4$widths[2:3] <- as.list(maxWidth)
grid.arrange(p1, p3, p2, p4, ncol = 2)
पुनश्च: मान लें मैं ग्रिड का उपयोग करने की व्यवस्था की जरूरत है और किंवदंतियों वास्तव में एक ही पैमाने नहीं हैं इसलिए facet_grid
बाहर आदि
यदि यह केवल कथा शीर्षक कि इस मुद्दे है, तो आप पर विचार ऊपर या नीचे में क्षैतिज रखकर ? अर्थात। 'प्लॉट 1 + थीम (legend.position =' bottom ', legend.direction =' क्षैतिज ') ' – MrGumble
जैसा कि आपने पोस्ट किए गए लिंक के लिए टिप्पणियों में सुझाव दिया है, आप शायद' चौड़ाई [2: 5]' का उपयोग करना चाहते हैं इकाइयों की तुलना में किंवदंती। ध्यान दें कि इसके परिणामस्वरूप @ कोहस्के के पहले उत्तर में केंद्रित एक ही किंवदंती होगी, क्योंकि गाइड ग्रोब आवंटित व्यूपोर्ट में स्वयं केंद्रित है। – baptiste
मैंने 'चौड़ाई [2: 5]' की कोशिश की और इसके परिणामस्वरूप बहुत ही अजीब प्लेसमेंट हुए। –