Bagaimana cara meningkatkan ukuran font dalam plot di R?


147

Saya bingung. Apa cara yang tepat untuk meningkatkan ukuran font teks dalam judul, label, dan tempat plot lainnya?

Sebagai contoh

x <- rnorm(100)
hist(x, xlim=range(x), xlab= "Variable Label", 
     ylab="density", main="Title of plot", prob=TRUE, ps=30)

The psArgumen tidak mengubah ukuran font (tetapi mengatakan dalam R Bantuan untuk ?parbahwa itu adalah untuk "titik ukuran teks (tapi tidak simbol)".

Juga apakah mungkin untuk memisahkan mengubah ukuran font dari fungsi merencanakan seperti hist?


Jawaban:


140

Anda ingin sesuatu seperti cex=1.5argumen untuk skala font 150 persen. Tapi jangan melihat help(par)karena ada juga cex.lab, cex.axis...


1
Terima kasih! Apa bedanya dengan "ps = 1.5"?
Tim

5
mengapa cex = 1.5 tidak berfungsi? Tetapi harus menentukan untuk setiap bagian dalam hal cex.lab, cex.axis, cex.main? Untuk apa cex = 1.5?
Tim

2
Apakah kamu membaca help(par)tentang ps? Sepertinya tidak berhubungan dengan teks sejauh yang saya tahu.
Dirk Eddelbuettel

2
Begitulah adanya, sebagian pasti untuk kompatibilitas dengan implementasi sebelumnya dari bahasa S.
Dirk Eddelbuettel

3
cex adalah faktor pembesaran. Nilai default adalah 1. Jika Anda perlu menentukan ukuran font, Anda sebaiknya bersiap untuk menggali dokumentasi yang dimulai dengan "Perangkat," pdfFonts, "pdf," embedFonts, dan banyak lainnya.
IRTFM

124

Demikian, untuk meringkas diskusi yang ada, tambahkan

cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5

ke plot Anda, di mana 1,5 bisa 2, 3, dll. dan nilai 1 adalah default akan meningkatkan ukuran font.

x <- rnorm(100)

cex tidak mengubah banyak hal

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE)

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex=1.5)

masukkan deskripsi gambar di sini

Tambahkan cex.lab = 1.5, cex.axis = 1.5, cex.main = 1.5, cex.sub = 1.5

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5)

masukkan deskripsi gambar di sini


2
BTW, jika Anda mencoba untuk memodifikasi sumbu dalam bagan batang (katakanlah untuk plot kepentingan variabel dalam randomForest atau GBM), Anda perlu menggunakan cex.names(jika Anda seorang manusia yang membaca sesuatu dari posisi tegak, Anda mungkin juga inginkan las=2)
geneorama

22

Perhatikan bahwa " cex " tidak mengubah banyak hal ketika plot dibuat dengan teks. Misalnya, plot pengelompokan hierarkis aglomeratif:

library(cluster)
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
plot(agn1, which.plots=2)

akan menghasilkan plot dengan teks berukuran normal:

masukkan deskripsi gambar di sini

dan plot(agn1, which.plots=2, cex=0.5)akan menghasilkan yang ini:

masukkan deskripsi gambar di sini


Bekerja faces2juga (dari wajah Chernoff )
Galled

Dalam contoh saya, saya harus menerapkan cex bukan untuk plot tetapi objek batin langsung untuk efek:plot(ci(roc(data$a, data$b, auc=TRUE, of="auc", print.auc=TRUE, print.auc.cex=1.5, plot=TRUE), of="thresholds", thresholds="best")))
Penyadap

21

Dengan coba-coba, saya telah menentukan yang berikut ini diperlukan untuk mengatur ukuran font:

  1. cextidak berfungsi hist(). Gunakan cex.axisuntuk angka pada sumbu, cex.labuntuk label.
  2. cextidak bekerja di axis()keduanya. Gunakan cex.axisuntuk angka pada sumbu.
  3. Di tempat pengaturan label menggunakan hist(), Anda dapat mengaturnya menggunakan mtext(). Anda dapat mengatur ukuran font menggunakan cex, tetapi menggunakan nilai 1 sebenarnya mengatur font menjadi 1,5 kali default !!! Anda perlu menggunakan cex=2/3untuk mendapatkan ukuran font default. Paling tidak, ini adalah kasus di bawah R 3.0.2 untuk Mac OS X, menggunakan output PDF.
  4. Anda dapat mengubah ukuran font default untuk menggunakan PDF pointsizedalam pdf().

Saya kira itu akan terlalu logis untuk mengharapkan R untuk (a) benar-benar melakukan apa yang harus dilakukan oleh dokumentasinya, (b) berperilaku dengan cara yang diharapkan.


2

Saya menemukan ini ketika saya ingin membuat label sumbu lebih kecil, tetapi meninggalkan yang lain dengan ukuran yang sama. Perintah yang bekerja untuk saya adalah:

par(cex.axis=0.5)

Sebelum perintah plot. Ingatlah untuk menempatkan:

par(cex.axis=1.0)

Setelah plot untuk memastikan font kembali ke ukuran default.


2

Untuk kelengkapan, penskalaan teks sebesar 150% dengan cex = 1.5, berikut adalah solusi lengkap:

cex <- 1.5
par(cex.lab=cex, cex.axis=cex, cex.main=cex)
plot(...)
par(cex.lab=1, cex.axis=1, cex.main=1)

Saya merekomendasikan membungkus hal-hal seperti ini untuk mengurangi pelat ketel, misalnya:

plot_cex <- function(x, y, cex=1.5, ...) {
  par(cex.lab=cex, cex.axis=cex, cex.main=cex)
  plot(x, y, ...)
  par(cex.lab=1, cex.axis=1, cex.main=1)
  invisible(0)
}

yang dapat Anda gunakan seperti ini:

plot_cex(x=1:5, y=rnorm(5), cex=1.3)

Yang ...dikenal sebagai elips di R dan digunakan untuk meneruskan parameter tambahan ke fungsi. Oleh karena itu, mereka umumnya digunakan untuk merencanakan. Jadi, berikut ini berfungsi seperti yang diharapkan:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))

1

Jika Anda ingin menambah font label histogram saat mengatur label = BENAR

bp=hist(values, labels = FALSE, 
 main='Histogram',
 xlab='xlab',ylab='ylab',  cex.main=2, cex.lab=2,cex.axis=2)

text(x=bp$mids, y=bp$counts, labels=bp$counts ,cex=2,pos=3)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.