Saya menggunakan R dan ggplot untuk menggambar sebar data, semua baik-baik saja kecuali bahwa angka pada sumbu y keluar dengan format eksponen gaya komputer, yaitu 4e + 05, 5e + 05, dll. Ini jelas tidak dapat diterima, jadi saya ingin menampilkannya sebagai 500.000, 400.000, dan sebagainya. Mendapatkan notasi eksponen yang tepat juga dapat diterima.
Kode untuk plot adalah sebagai berikut:
p <- ggplot(valids, aes(x=Test, y=Values)) +
geom_point(position="jitter") +
facet_grid(. ~ Facet) +
scale_y_continuous(name="Fluorescent intensity/arbitrary units") +
scale_x_discrete(name="Test repeat") +
stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar")
Setiap bantuan sangat dihargai.
ggplot
opsi default sebagai "jelas tidak dapat diterima". Maksud Anda, Anda memiliki preferensi pribadi untuk format yang berbeda. Angka dalam format4e+05
adalah notasi ilmiah, dan akan menjadi format yang disukai dalam berbagai aplikasi.Jawaban:
Pilihan lain adalah memformat label centang sumbu Anda dengan koma adalah dengan menggunakan paket
scales
, dan tambahkanuntuk pernyataan ggplot Anda.
Jika Anda tidak ingin memuat paket, gunakan:
sumber
Saya juga menemukan cara lain untuk melakukan ini yang memberikan notasi 'x10 (superscript) 5' yang tepat pada sumbu. Saya mempostingnya di sini dengan harapan mungkin bermanfaat bagi sebagian orang. Saya mendapat kode dari sini jadi saya mengklaim tidak ada kredit untuk itu, yang benar berlaku untuk Brian Diggs.
Yang kemudian dapat Anda gunakan sebagai
sumber
format(...)
:l <- gsub("0e\\+00","0",l)
gsub()
secara langsung setelahformat()
, sambil menguji apa yangformat()
mengembalikan case Anda di konsol terpisah.gsub
perintah terakhir :# remove + after exponent, if exists. E.g.: (3x10^+2 -> 3x10^2)
l <- gsub("e\\+","e",l)
dan setelahnya:# convert 1x10^ or 1.000x10^ -> 10^
l <- gsub("\\'1[\\.0]*\\'\\%\\*\\%", "", l)
untuk membuatnya dalam format yang biasanya digunakan dalam kertas.sumber
library(scales)
dan menggunakancomma
yang seharusnya berfungsi lebih baik daripada fungsi yang saya miliki sebelumnya.Saya terlambat ke permainan di sini, tetapi kalau-kalau ada yang ingin solusi mudah, saya membuat satu set fungsi yang bisa disebut seperti:
yang memberi Anda angka yang dapat dibaca manusia untuk sumbu x atau y (atau angka apa pun secara umum sebenarnya).
Anda dapat menemukan fungsinya di sini: Github Repo Cukup salin fungsi ke skrip Anda sehingga Anda dapat memanggilnya.
sumber
Saya menemukan jawaban yang disarankan Jack Aidley adalah yang bermanfaat.
Saya ingin membuang opsi lain. Misalkan Anda memiliki seri dengan banyak angka kecil, dan Anda ingin memastikan label sumbu menuliskan titik desimal penuh (mis. 5e-05 -> 0,0005), maka:
sumber
scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
Mengapa tidak ada formatter yang sudah ditentukan sebelumnya seperti itu, neraka tahu.