[英]Amplitude lines + geom_point in ggplot2
我想在此圖中添加一些附加的線條。 我必須顯示最大和最小數據在水平和垂直方向上的距離,如下例所示。
就像添加沒有箱子的箱子圖
我嘗試按照此示例進行操作,但未成功。 避免在ggplot2中使用geom_point進行圖覆蓋
我是在photoshop上完成的。 但是,如何添加R?
原始情節
plot <- ggplot(mtcars, aes(x = wt, y = mpg, colour = factor(gear))) +
geom_point() +
ggtitle("Cars")
plot
修改版
我對此非常好奇,但是發現我的cowplot
不能適當地cowplot
地塊。 包裝作者本人建議改用patchwork
以實現更復雜的間距和對齊方式。 使用cowplot
,我制作了一個虛擬ggplot
來將右上角保留為空白,但是無法獲得正確的高度。 patchwork
具有plot_spacing
函數來執行此操作。
第一個任務是制作一個用於繪制線條的摘要數據框。 我添加了一個行號,因此有一種方法可以垂直堆疊行的頂部邊緣,水平堆疊行的右側邊緣。 (我想一個啞數值和position_dodge
可能也起作用。)
library(tidyverse)
library(patchwork)
summaries <- mtcars %>%
group_by(gear) %>%
summarise(minwt = min(wt), maxwt = max(wt), minmpg = min(mpg), maxmpg = max(mpg)) %>%
ungroup() %>%
mutate(row = row_number())
summaries
#> # A tibble: 3 x 6
#> gear minwt maxwt minmpg maxmpg row
#> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
#> 1 3 2.46 5.42 10.4 21.5 1
#> 2 4 1.62 3.44 17.8 33.9 2
#> 3 5 1.51 3.57 15 30.4 3
我使用相同的ggplot
基礎繪制了頂部和右側的圖,並為其指定了theme_void
因此,除了線段本身之外,沒有任何顯示。 我建議以不同的主題進行介紹,以便您了解情節如何組合在一起。
summary_base <- ggplot(summaries, aes(color = factor(gear)))
top <- summary_base +
geom_segment(aes(x = minwt, xend = maxwt, y = row, yend = row), show.legend = F) +
theme_void()
right <- summary_base +
geom_segment(aes(x = row, xend = row, y = minmpg, yend = maxmpg), show.legend = F) +
theme_void()
然后是主要情節:
points <- ggplot(mtcars, aes(x = wt, y = mpg, color = factor(gear))) +
geom_point() +
theme(legend.position = "bottom")
然后, patchwork
功能使您只需將地塊加在一起即可。 它們從左到右,從上到下,所以為了獲得右上的空白,我使用plot_spacer
。 然后plot_layout
設置網格。 您可以根據需要調整相對的高度和寬度-可能會使它們更窄。 這是我第一次使用patchwork
,但是非常簡單。
top + plot_spacer() + points + right +
plot_layout(ncol = 2, nrow = 2, widths = c(1, 0.2), heights = c(0.2, 1))
由reprex軟件包 (v0.2.0)於2018-07-11創建。
得到了這個結果。 (在原始情節上)
我構建了3個圖+一個空圖,如下所示: ggplot2中帶有邊際直方圖的散點圖
我使用的水平和垂直圖:
horizontal <- ggplot(mtcars, aes(wt, gear, colour = factor(gear)) +
geom_point() +
geom_line() +
theme(legend.position = "none",
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
plot.margin=unit(c(0,1,-0.4,0.7), "cm")) +
xlab("") + ylab("")
horizontal <- ggplot(mtcars, aes(gear, mpg, colour = factor(gear)) +
geom_point() +
geom_line() +
theme(legend.position = "none",
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
plot.margin=unit(c(0,1,-0.4,0.7), "cm")) +
xlab("") + ylab("")
實現最佳擬合是在每個圖中管理邊距。
然后,空情節
empty <- ggplot()+geom_point(aes(1,1), colour="white")+
theme(axis.ticks=element_blank(),
panel.background=element_blank(),
axis.text.x=element_blank(), axis.text.y=element_blank(),
axis.title.x=element_blank(), axis.title.y=element_blank())
所以,加入一切
grid.arrange(horizontal, empty, plot, vertical, ncol=2, nrow=2,
widths=c(1, 0.05), heights=c(0.5, 4))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.