การเปลี่ยนขนาดตัวอักษรและทิศทางของข้อความในแกน ggplot2


188

ฉันกำลังพล็อตกราฟด้วยตัวแปรเด็ดขาดบนแกน x และตัวแปรตัวเลขบนแกน y

สำหรับแกน x เนื่องจากมีจุดข้อมูลมากมายการจัดรูปแบบข้อความเริ่มต้นจะทำให้ป้ายกำกับสำหรับแต่ละเครื่องหมายติ๊กซ้อนทับกับป้ายกำกับอื่น ๆ ฉัน (a) เปลี่ยนขนาดตัวอักษรสำหรับข้อความแกนของฉันได้อย่างไรและ (ข) เปลี่ยนการวางแนวของข้อความเพื่อให้ข้อความตั้งฉากกับแกน


และอีกหนึ่งstackoverflow.com/q/8097642/1172302
Nikos Alexandris

มีทับซ้อนกับstackoverflow.com/q/1330989/946850แต่คำถามนั้นไม่ครอบคลุมการปรับขนาดข้อความ
krlmlr

คำตอบ:


292

การใช้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ผมคิดว่ามันควรจะเป็น
Artem Sokolov

ความจริง! ถูกต้องตามความคิดเห็นของ Artem แต่ฉันไม่ได้อัปเดตภาพ
Drew Steen

67

Ditto @Drew 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))

5

เมื่อทำการแปลงจำนวนมากมันเหมาะสมที่จะตั้งค่าทั่วโลก (ส่วนที่เกี่ยวข้องคือบรรทัดที่สองสามบรรทัดด้วยกันเป็นตัวอย่างการทำงาน):

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

4

การใช้แอตทริบิวต์ "fill" ช่วยในกรณีเช่นนี้ คุณสามารถลบข้อความออกจากแกนโดยใช้element_blank()และแสดงแผนภูมิแท่งหลายสีพร้อมคำอธิบาย ฉันกำลังวางแผนความถี่ในการกำจัดชิ้นส่วนในร้านซ่อมดังนี้

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

ฉันไปแก้ปัญหานี้ในกรณีของฉันเนื่องจากฉันมีแท่งหลายแท่งในแผนภูมิแท่งและฉันไม่สามารถหาขนาดตัวอักษรที่เหมาะสมซึ่งทั้งอ่านได้และเล็กพอที่จะไม่ทับซ้อนกัน


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))

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.