फ़ॉन्ट आकार और अक्षों की दिशा को ggplot2 में बदलना


188

मैं x अक्ष पर एक श्रेणीगत चर और y अक्ष पर एक संख्यात्मक चर के साथ एक ग्राफ तैयार कर रहा हूं।

एक्स अक्ष के लिए, यह देखते हुए कि कई डेटा बिंदु हैं, डिफ़ॉल्ट पाठ स्वरूपण प्रत्येक टिक चिह्न के लिए लेबल को अन्य लेबल के साथ ओवरलैप करने का कारण बनता है। मैं (a) अपने अक्ष पाठ के लिए फ़ॉन्ट आकार कैसे बदलूं और (b) पाठ का उन्मुखीकरण बदलूं ताकि पाठ अक्ष के लंबवत हो?



वहाँ के साथ ओवरलैप है stackoverflow.com/q/1330989/946850 , लेकिन इस सवाल का पाठ का आकार बदलने को कवर नहीं करता।
krlmlr

जवाबों:


291

उपयोग करें theme():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
    theme(text = element_text(size=20),
        axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful

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

अपने ggplots को यहाँ प्रारूपित करने के तरीके के बारे में बहुत सारी अच्छी जानकारी है । आप उन मापदंडों की पूरी सूची देख सकते हैं जिन्हें आप (मूल रूप से, उन सभी को) संशोधित कर सकते हैं ?theme


2
मुझे लगता है कि यह होना चाहिए hjust=1
आर्टेम सोकोलोव

सच! प्रति आर्टेम की टिप्पणी को सही किया, लेकिन मैंने छवि को अपडेट नहीं किया।
ड्रू स्टीन

67

के उपयोग पर Ditto @ ड्रू स्टीन theme()। यहाँ अक्ष पाठ और शीर्षकों के लिए सामान्य विषय विशेषताएँ हैं।

ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
  geom_point()+
  theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))

19

विषय का उपयोग करें ():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))

19

पिछले समाधान करने के लिए जोड़ा जा रहा है, तो आप भी फ़ॉन्ट आकार निर्दिष्ट कर सकते हैं रिश्तेदार को base_sizeशामिल जैसे विषयों में theme_bw()(जहां base_size11 है) का उपयोग कर rel()कार्य करते हैं।

उदाहरण के लिए:

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))

4

"भरण" विशेषता का उपयोग इस तरह के मामलों में मदद करता है। आप पाठ का उपयोग अक्ष से निकाल सकते हैं element_blank()और एक किंवदंती के साथ बहु रंग बार चार्ट दिखा सकते हैं। मैं नीचे की मरम्मत की दुकान में एक अंश हटाने की आवृत्ति की साजिश रच रहा हूं

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x  = element_blank())

मैं अपने मामले में इस समाधान के लिए गया था क्योंकि मेरे पास बार चार्ट में कई बार थे और मुझे एक उपयुक्त फ़ॉन्ट आकार नहीं मिल रहा था जो कि पठनीय है और एक दूसरे को ओवरलैप न करने के लिए काफी छोटा है।


4

कई भूखंडों को बनाते समय, यह इसे विश्व स्तर पर स्थापित करने के लिए समझ में आता है (प्रासंगिक हिस्सा दूसरी पंक्ति है, तीन लाइनें एक साथ काम कर रहे उदाहरण हैं):

   library('ggplot2')
   theme_update(text = element_text(size=20))
   ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()

0

अतिव्यापी लेबल से निपटने का एक और तरीका उपयोग कर रहा है guide = guide_axis(n.dodge = 2)

library(dplyr)
library(tibble)
library(ggplot2)

dt <- mtcars %>% rownames_to_column("name") %>% 
  dplyr::filter(cyl == 4)

# Overlapping labels
ggplot(dt, aes(x = name, y = mpg)) + geom_point()

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

ggplot(dt, aes(x = name, y = mpg)) + geom_point() +
  scale_x_discrete(guide = guide_axis(n.dodge = 2))

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

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