kiểm soát kích thước phông chữ ggplot geom_text


93

Tôi đã cố gắng thay đổi phông chữ thành 10 cho các nhãn của biểu đồ thanh của tôi ggplot2bằng cách làm như sau:

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)

nhưng hình ảnh kết quả có kích thước phông chữ siêu lớn cho các nhãn biểu đồ thanh.

Sau đó, tôi nghĩ đến việc sửa đổi geom_text()với điều này:

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

Phông chữ nhãn thậm chí còn lớn hơn ...

Tôi có thể thay đổi kích thước bên trong geom_textthành một cái gì đó như 3 và bây giờ nó trông giống như phông chữ 10, tương tự như các nhãn trục.

Tôi tự hỏi điều gì đang xảy ra? Không theme(text=element_text(size=10))áp dụng cho nhãn?

Và tại sao kích thước 10 inch lại geom_text()khác với kích thước in theme(text=element_text())?

Câu trả lời:


141

Dưới đây là một số tùy chọn để thay đổi kích thước văn bản / nhãn

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)

Các sizetrong geom_textthay đổi kích thước của geom_textnhãn.

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)


Đối với điều này Và tại sao kích thước 10 trong geom_text () khác với kích thước trong theme (text = element_text ())?

Vâng, chúng khác nhau. Tôi đã kiểm tra nhanh bằng tay và chúng có vẻ theo tỷ lệ ~ (14/5) cho các geom_textkích themecỡ.

Vì vậy, một cách khắc phục khủng khiếp cho các kích thước đồng nhất là chia tỷ lệ theo tỷ lệ

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

Điều này tất nhiên không giải thích được tại sao? và là một pita (và tôi cho rằng có một cách hợp lý hơn để làm điều này)


2
thú vị, bạn đã kiểm tra những gì để tìm ra tỷ lệ 14/5?
olala,

34
tôi hiểu rồi. bạn nhắc nhở tôi về điều gì đó tôi đã đọc gần đây, tôi đoán đó là sự khác biệt về đơn vị, geom_text mặc định là 5 có thể là 5mm và đơn vị kích thước theme () là point. 1 điểm là 1/72 inch = 0.35mm, vì vậy 1 trong geom_text () là 1mm, 1 / 0,35 = ~ 14/5 :)
olala

3
Câu trả lời của agstudy mô tả lý do tại sao stackoverflow.com/questions/17311917/ggplot2-the-unit-of-size
user20650
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.