การควบคุมขนาดตัวอักษร ggplot geom_text


93

ฉันพยายามเปลี่ยนฟอนต์เป็น 10 สำหรับเลเบลของพล็อตบาร์ของฉันggplot2โดยทำสิ่งนี้:

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") + 
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)

แต่ภาพที่ได้จะมีขนาดตัวอักษรที่ใหญ่มากสำหรับป้ายพล็อตแท่ง

จากนั้นฉันก็คิดว่าจะแก้ไขgeom_text()ด้วยสิ่งนี้:

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")

ฟอนต์ป้ายยิ่งแล้วใหญ่ ...

ฉันสามารถเปลี่ยนขนาดภายในgeom_textเป็น 3 และตอนนี้ดูเหมือนแบบอักษร 10 คล้ายกับป้ายชื่อแกน

ฉันสงสัยว่าเกิดอะไรขึ้น? ไม่theme(text=element_text(size=10))ใช้กับป้ายกำกับ?

แล้วทำไมขนาด 10 นิ้วถึงgeom_text()แตกต่างจากในtheme(text=element_text())?

คำตอบ:


141

ต่อไปนี้เป็นตัวเลือกบางส่วนสำหรับการเปลี่ยนขนาดข้อความ / ฉลาก

library(ggplot2)

# Example data using mtcars

a <- aggregate(mpg ~ vs + am , mtcars, function(i) round(mean(i)))

p <- ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
            geom_bar(stat="identity",position="dodge") + 
            geom_text(data = a, aes(label = mpg), 
                            position = position_dodge(width=0.9),  size=20)

sizeในgeom_textการเปลี่ยนแปลงขนาดของgeom_textป้าย

p <- p + theme(axis.text = element_text(size = 15)) # changes axis labels

p <- p + theme(axis.title = element_text(size = 25)) # change axis titles

p <- p + theme(text = element_text(size = 10)) # this will change all text size 
                                                             # (except geom_text)


ด้วยเหตุนี้ขนาด 10 ใน geom_text () จึงแตกต่างจากในธีม (text = element_text ())

ใช่พวกเขาแตกต่างกัน ฉันทำการตรวจสอบด้วยตนเองอย่างรวดเร็วและดูเหมือนว่าจะอยู่ในอัตราส่วน ~ (14/5) สำหรับgeom_textขนาดต่อthemeขนาด

ดังนั้นการแก้ไขที่น่ากลัวสำหรับขนาดสม่ำเสมอคือการปรับขนาดตามอัตราส่วนนี้

geom.text.size = 7
theme.size = (14/5) * geom.text.size

ggplot(mtcars, aes(factor(vs), y=mpg, fill=factor(am))) + 
  geom_bar(stat="identity",position="dodge") + 
  geom_text(data = a, aes(label = mpg), 
            position = position_dodge(width=0.9),  size=geom.text.size) + 
  theme(axis.text = element_text(size = theme.size, colour="black")) 

หลักสูตรนี้ไม่ได้อธิบายว่าทำไม? และเป็นไฟลนก้น (และฉันคิดว่ามีวิธีที่เหมาะสมกว่าในการทำสิ่งนี้)


2
น่าสนใจคุณตรวจสอบอะไรเพื่อหาอัตราส่วน 14/5
olala

34
ฉันเห็น. คุณเตือนฉันเกี่ยวกับสิ่งที่ฉันอ่านเมื่อเร็ว ๆ นี้ฉันเดาว่ามันเป็นความแตกต่างของหน่วยค่าเริ่มต้นของ geom_text อาจเป็น 5 มม. และหน่วยขนาดธีม () คือจุด 1 จุดเท่ากับ 1/72 นิ้ว = 0.35 มม. ดังนั้น 1 ใน geom_text () คือ 1 มม. 1 / 0.35 = ~ 14/5 :)
olala

3
คำตอบของ agstudy อธิบายสาเหตุที่stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size
user20650
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.