簡體   English   中英

試圖在 ggplot2 中的 x 軸上繪制一個空心點

[英]Trying to draw a hollow point over the x-axis in ggplot2

我正在使用 geom_point 來繪制一些點。 我正在使用 scale_shape_manual 將點形狀設置為空心正方形(形狀 #22)。 然后我使用 scale_color_manual 用白色填充正方形。

以上工作按預期工作。 但是,我的一些觀點直接位於(或非常接近)我的 x 軸上。 在這些情況下,我看到的是 x 軸穿過它的空心盒子。 我真正想要的是白色填充框位於 x 軸頂部,覆蓋它。

我不想要的圖片:

感謝您的建議:這是一個演示我的問題的簡單代碼示例:

library("ggplot2")

theme_set(theme_classic()) 
theme_update(panel.grid.major = element_blank(), panel.grid.minor = element_blank())

x_values <- c(1,2)
y_values <- c(3,4)

plot_data <- data.frame(x_values, y_values)

ggplot(plot_data, aes(x=x_values, y=y_values)) + 
  geom_point(size=5, shape=22, colour="red", fill="white") +
  scale_y_continuous(expand=c(0,0)) + 
  coord_cartesian(clip="off") 

這是 output:

在此處輸入圖像描述

可以看到右上角(x=2,y=4)的點是一個空心盒子。 左下角的點(x=1,y=3)也是一個空心盒子,但是可以看到盒子里面的x軸。 我想覆蓋那里的x軸。

我認為填充會做到這一點,但似乎 x 軸是最后繪制的。

只是為了表明填充正在工作,如果您將填充設置為綠色,這里是 plot:在此處輸入圖像描述

形狀 21 到 25 具有單獨的邊框並填充 colors。 邊框顏色用color設置,內部填充顏色用fill設置。 因此,如果您希望每個點標記具有相同的形狀和顏色,您可以執行以下操作:

geom_point(shape=22, colour="red", fill="white")

在將數據列映射到colourfill美學的情況下,您可以使用scale_colour_manual()和/或scale_fill_manual()手動設置顏色/填充映射,但想法是相同的。 使用colour作為點標記的邊框並fill內部。 同樣,當您將數據列 map 用於shape美學時,您將使用scale_shape_manual()來選擇特定的形狀映射。

更新:我忘記了軸是在點的“頂部”繪制的,當您關閉剪輯時,這一點變得明顯。 您可能需要關閉標准 x 軸並自己繪制。 可能有更好的方法,但目前還沒有想到。 這是一個例子:

ggplot(plot_data, aes(x=x_values, y=y_values)) + 
  annotate(x=0.95, xend=2.05, y=3, yend=3, geom='segment') +
  annotate(x=seq(1,2,0.25), xend=seq(1,2,0.25), y=3, yend=2.99, geom="segment") +
  geom_point(size=5, shape=22, colour="red", fill="white") +
  coord_cartesian(clip="off") +
  theme(axis.line.x=element_blank(),
        axis.ticks.x=element_blank()) +
  scale_x_continuous(limits=c(0.95,2.05), expand=c(0,0), breaks=seq(1,2,0.25)) +
  scale_y_continuous(expand=c(0,0))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM