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?

Tim
sumber
Kemungkinan duplikat dari Bagaimana mengubah ukuran label plot R
Waldir Leoncio

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

Dirk Eddelbuettel
sumber
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

Jeromy Anglim
sumber
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

OskrSaSi
sumber
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.

Vagabond Perkotaan
sumber
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.

Odysseus Ithaca
sumber
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))
Adam Erickson
sumber
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)
yeinhorn
sumber