स्थिति geom_text को चकमा देने वाले बारप्लॉट पर


96

मैंने शीर्षक को आत्म-व्याख्यात्मक बनाने की कोशिश की, लेकिन यहाँ जाता है - पहले डेटा:

dtf <- structure(list(variable = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 
4L, 4L, 5L, 5L), .Label = c("vma", "vla", "ia", "fma", "fla"), class = "factor"), 
    ustanova = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
    2L), .Label = c("srednja škola", "fakultet"), class = "factor"), 
    `(all)` = c(42.9542857142857, 38.7803203661327, 37.8996138996139, 
    33.7672811059908, 29.591439688716, 26.1890660592255, 27.9557692307692, 
    23.9426605504587, 33.2200772200772, 26.9493087557604)), .Names = c("variable", 
"ustanova", "(all)"), row.names = c(NA, 10L), class = c("cast_df", 
"data.frame"), idvars = c("variable", "ustanova"), rdimnames = list(
    structure(list(variable = structure(c(1L, 1L, 2L, 2L, 3L, 
    3L, 4L, 4L, 5L, 5L), .Label = c("vma", "vla", "ia", "fma", 
    "fla"), class = "factor"), ustanova = structure(c(1L, 2L, 
    1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("srednja škola", 
    "fakultet"), class = "factor")), .Names = c("variable", "ustanova"
    ), row.names = c("vma_srednja škola", "vma_fakultet", "vla_srednja škola", 
    "vla_fakultet", "ia_srednja škola", "ia_fakultet", "fma_srednja škola", 
    "fma_fakultet", "fla_srednja škola", "fla_fakultet"), class = "data.frame"), 
    structure(list(value = structure(1L, .Label = "(all)", class = "factor")), .Names = "value", row.names = "(all)", class = "data.frame")))

और मैं एक चकमा देने वाला बार्प्लॉट बनाना चाहता हूं, coord_flipबार के अंदर कुछ टेक्स्ट लेबल डालूं :

ggplot(bar) + geom_bar(aes(variable, `(all)`, fill = ustanova), position = "dodge") +
 geom_text(aes(variable, `(all)`, label = sprintf("%2.1f", `(all)`)), position = "dodge") +
 coord_flip()

आप यहाँ आउटपुट देख सकते हैं ।

यहां छवि विवरण दर्ज करें

मुझे लगता है मैं कुछ तुच्छ के लिए पूछ रहा हूँ। मैं चाहता हूं कि टेक्स्ट लेबल स्टैक्ड बार को "फॉलो" करें। लेबल को सही तरीके से y- अक्ष पर रखा जाता है, लेकिन उन्हें x- अक्ष पर सही ढंग से कैसे रखा जाए?


हां ... मुझे यह एक ggplot2 मेलिंग सूची पर पोस्ट करना चाहिए। मैं क्रॉस-पोस्ट नहीं करना चाहता, इसलिए मैं अपने धैर्य की टोपी लगाने जा रहा हूं और @hadley के लिए कुछ करने की प्रतीक्षा कर रहा हूं! =)
aL3xa

मैं गलत था। और मुझे जाहिरा तौर पर ggplot पैकेज से अधिक परिचित होने की आवश्यकता है।
जोरिस मेय

जवाबों:


152

क्या ये वही है जो तुम चाहते हो?

ggplot(bar) + 
  geom_bar(aes(variable, `(all)`, fill = ustanova), position = "dodge") +
  geom_text(aes(variable, `(all)`, label = sprintf("%2.1f", `(all)`)), 
            position = position_dodge(width = 1)) + 
  coord_flip()

कुंजी position = position_dodge(width = 1)इसके बजाय उपयोग कर रही है position = "dodge", जो बिना किसी पैरामीटर के सिर्फ एक शॉर्टकट है।

यहां छवि विवरण दर्ज करें


इसमें ggplot2_2.0.0आपको कई उदाहरण मिलते हैं ?geom_textकि कैसे geom_textडॉजेड या स्टैक्ड बार ("नाम का कोड चंक" # Aligning labels and bars") पर स्थिति। प्रश्नोत्तर स्थिति में चौड़ाई का तर्क क्या है? विषय का अधिक गहन विवरण प्रदान करता है।


1
बिल्कुल मैं क्या चाहता हूँ! मैं तुम्हें इस के लिए एक बियर देना है! =)
aL3xa

2
तो क्या इसे स्वचालित करने का कोई तरीका नहीं है? हमेशा चौड़ाई निर्दिष्ट करनी चाहिए?
vashts85 16

12
परत fill = ustanovaमें जोड़े जाने के बाद यह केवल मेरे लिए काम geom_textकरता है जो विशेष रूप से समझ में आता है जब आपके पास कई क्षैतिज पट्टियाँ होती हैं (शायद केवल 3+ बार प्रति x के लिए आवश्यक हो) और पाठ के लिए विराम की संख्या समान होनी चाहिए क्योंकि यह सलाखों के लिए है ।
एलन

3
Facetted और dodged के लिए यह एक उपयोगी उत्तर है: stackoverflow.com/a/26661791/1000343
टायलर रिंकर

@ सभी खोजों के बीच मैंने स्टैकओवरफ़्लो पर किया था, आपका उत्तर केवल एक ही था जिसने मेरी समस्या को हल किया।
Ga13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.