我想創建一個圍繞從以下代碼創建的圖的六邊形:
data.frame(x=rep(2000:2001,each=3),
y=rep(c("Jan","Feb","Mar"),2)) %>%
ggplot()
geom_point(aes(factor(x),y),shape=21,size=25)
coord_fixed()
我想要這樣的輸出:

我首先研究了如何改變面板形狀本身,但找不到任何解決方案。然后我研究使用 ggforce 包創建一個六邊形,但也沒有運氣。我試過:
ggforce::geom_regon(aes(x0= ? ,y0= ?,sides=6,angle=0,r= ?))
但找不到x0,y0和r引數的適當值。
uj5u.com熱心網友回復:
一種選擇是添加一個annotation_custom需要設定clip="off"和增加繪圖邊距的多邊形。一個缺點是最后一步涉及一些擺弄以獲得正確的邊距值:
library(ggplot2)
library(grid)
df <- data.frame(
x = rep(2000:2001, each = 3),
y = rep(c("Jan", "Feb", "Mar"), 2)
)
base <- ggplot(df)
geom_point(aes(factor(x), y), shape = 21, size = 25)
coord_fixed(clip = "off")
grob <- grid::polygonGrob(
x = c(0, 0.5, 1, 1, 0.5, 0), y = c(0, -.25, 0, 1, 1.25, 1),
gp = grid::gpar(fill = NA, lwd = unit(2, "lines"))
)
base
annotation_custom(grob = grob)
theme(plot.margin = margin(t = 66, r = 5.5, b = 66, l = 5.5, "pt"))

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/409175.html
標籤:
上一篇:兩個變數之間的相關圖與圖中的線和人r值-尋求替代示例
下一篇:根據列名向量繪制多個不同的直方圖
