Saya ingin menggunakan hexbin biokonduktor (yang dapat saya lakukan) untuk menghasilkan plot yang memenuhi seluruh wilayah tampilan (png) - tanpa sumbu, tanpa label, tanpa latar belakang, tanpa nuthin '.
Bukankah lebih mudah membuat plot hexbin dan memotongnya di editor gambar?
joran
4
cobatheme_void()
Brian D
Jawaban:
185
Sesuai komentar saya dalam jawaban Chase, Anda dapat menghapus banyak hal ini menggunakan element_blank:
dat <- data.frame(x=runif(10),y=runif(10))
p <- ggplot(dat, aes(x=x, y=y)) +
geom_point() +
scale_x_continuous(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0))
p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),legend.position="none",
panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),plot.background=element_blank())
Sepertinya masih ada margin kecil di sekitar tepi .png yang dihasilkan saat saya menyimpan ini. Mungkin orang lain tahu cara menghapus bahkan komponen itu.
(Catatan historis: Sejak ggplot2 versi 0.9.2, optssudah tidak digunakan lagi. Sebagai gantinya gunakan theme()dan ganti theme_blank()dengan element_blank().)
Komentar sepintas: Dalam beberapa kasus, theme(axis.ticks=element_blank())tidak berfungsi sebaik theme(axis.ticks.x=element_blank()), mungkin bug sementara di suatu tempat (saya memiliki set tema sendiri, lalu saya mencoba untuk menimpa: hanya axis.ticks.xdan axis.ticks.ymelakukan pekerjaan itu.)
PatrickT
109
Re: mengubah pilihan ke tema dll (untuk orang-orang malas):
Lab (x = "", y = "") tampaknya tidak menghilangkan sumbu, hanya labelnya.
miratrix
@ miratrix maaf, kesalahanku. Diperbarui.
luchonacho
6
@luchonacho Menggunakan labs(x="",y="")spasi pada judul sumbu karena sebenarnya ada judul, hanya saja tanpa tanda. Untuk menghapus judul sumbu dan ruang untuk mereka, lebih baik digunakan+ theme(axis.title = element_blank())
Saya menyadari Anda belum memiliki hak untuk mengedit, tetapi jika Anda melihat jawaban ggplot2 saya yang lain yang perlu diperbarui re: opts () jangan ragu untuk menyarankan edit. Saya akan mendapat notifikasi dan dapat menyertakannya sendiri.
theme_void()
Jawaban:
Sesuai komentar saya dalam jawaban Chase, Anda dapat menghapus banyak hal ini menggunakan
element_blank
:dat <- data.frame(x=runif(10),y=runif(10)) p <- ggplot(dat, aes(x=x, y=y)) + geom_point() + scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0)) p + theme(axis.line=element_blank(),axis.text.x=element_blank(), axis.text.y=element_blank(),axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(),legend.position="none", panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(), panel.grid.minor=element_blank(),plot.background=element_blank())
Sepertinya masih ada margin kecil di sekitar tepi .png yang dihasilkan saat saya menyimpan ini. Mungkin orang lain tahu cara menghapus bahkan komponen itu.
(Catatan historis: Sejak ggplot2 versi 0.9.2,
opts
sudah tidak digunakan lagi. Sebagai gantinya gunakantheme()
dan gantitheme_blank()
denganelement_blank()
.)sumber
theme(axis.ticks=element_blank())
tidak berfungsi sebaiktheme(axis.ticks.x=element_blank())
, mungkin bug sementara di suatu tempat (saya memiliki set tema sendiri, lalu saya mencoba untuk menimpa: hanyaaxis.ticks.x
danaxis.ticks.y
melakukan pekerjaan itu.)Re: mengubah pilihan ke tema dll (untuk orang-orang malas):
theme(axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position="none", panel.background=element_blank(), panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), plot.background=element_blank())
sumber
Jawaban saat ini tidak lengkap atau tidak efisien. Berikut ini (mungkin) cara terpendek untuk mencapai hasil (menggunakan
theme_void()
:data(diamonds) # Data example ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none")
Hasilnya adalah:
Jika Anda tertarik untuk hanya menghilangkan label ,
labs(x="", y="")
lakukan triknya:ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + labs(x="", y="")
sumber
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))
menyarankan itu tidak 100% batallabs(x="",y="")
spasi pada judul sumbu karena sebenarnya ada judul, hanya saja tanpa tanda. Untuk menghapus judul sumbu dan ruang untuk mereka, lebih baik digunakan+ theme(axis.title = element_blank())
labs(x = NULL)
atauxlab(NULL)
cara lain.'opts' is deprecated.
sedang
ggplot2 >= 0.9.2
digunakanp + theme(legend.position = "none")
sumber
xy <- data.frame(x=1:10, y=10:1) plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y)) plot panel = grid.get("panel-3-3") grid.newpage() pushViewport(viewport(w=1, h=1, name="layout")) pushViewport(viewport(w=1, h=1, name="panel-3-3")) upViewport(1) upViewport(1) grid.draw(panel)
sumber
Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
Terlambat ke pesta, tetapi mungkin menarik ...
Saya menemukan kombinasi
labs
danguides
spesifikasi berguna dalam banyak kasus:Anda tidak menginginkan apa pun selain kisi dan latar belakang:
ggplot(diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + labs(x = NULL, y = NULL) + guides(x = "none", y = "none")
Anda hanya ingin menekan label tanda centang dari satu atau kedua sumbu:
ggplot(diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + guides(x = "none", y = "none")
sumber
Saya tidak menemukan solusi ini di sini. Ini menghapus semuanya menggunakan paket cowplot:
library(cowplot) p + theme_nothing() + theme(legend.position="none") + scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0)) + labs(x = NULL, y = NULL)
Perhatikan saja bahwa hal yang sama dapat dilakukan menggunakan theme.void () seperti ini:
p + theme_void() + theme(legend.position="none") + scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0)) + labs(x = NULL, y = NULL)
sumber
Apakah ini sesuai dengan keinginan Anda?
p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) + p + scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0)) + opts(legend.position = "none")
sumber