簡體   English   中英

ggplot,在條形組之間添加網格線

[英]ggplot, add grid lines between bars groups

在具有離散 x 軸的 ggplot 中使用躲避條時,它們以 x 刻度為中心。 因此,垂直網格線也沿着柱組中間的刻度線穿過。

在此處輸入圖片說明

我希望條形組之間有網格線。 這在前面顯示的情況下特別有用,在這種情況下,條形稀疏並且每個條形所屬的組不是直接的。

這是代碼(沒有 x 的排序,它不相關並且很長):

library(ggplot)
library(dplyr)

structure(list(Reparto = c("Oncologia medica", "Centro trapianti", 
"Chirurgia epatobiliare", "Dh oncologico", "Radioterapia", "Chirurgia", 
"Chirurgia oncologica", "Gastroenterologia", "Radiologia", "Oncologia medica", 
"Centro trapianti", "Chirurgia epatobiliare", "Dh oncologico", 
"Radioterapia", "Chirurgia", "Chirurgia oncologica", "Gastroenterologia", 
"Radiologia", "Oncologia medica", "Centro trapianti", "Chirurgia epatobiliare", 
"Dh oncologico", "Radioterapia", "Chirurgia", "Chirurgia oncologica", 
"Gastroenterologia", "Radiologia", "Oncologia medica", "Centro trapianti", 
"Chirurgia epatobiliare", "Dh oncologico", "Radioterapia", "Chirurgia", 
"Chirurgia oncologica", "Gastroenterologia", "Radiologia"), Fascia.oraria = c("00:00 - 3:00", 
"00:00 - 3:00", "00:00 - 3:00", "00:00 - 3:00", "00:00 - 3:00", 
"00:00 - 3:00", "00:00 - 3:00", "00:00 - 3:00", "00:00 - 3:00", 
"3:00 - 13:00", "3:00 - 13:00", "3:00 - 13:00", "3:00 - 13:00", 
"3:00 - 13:00", "3:00 - 13:00", "3:00 - 13:00", "3:00 - 13:00", 
"3:00 - 13:00", "13:00 - 24:00", "13:00 - 24:00", "13:00 - 24:00", 
"13:00 - 24:00", "13:00 - 24:00", "13:00 - 24:00", "13:00 - 24:00", 
"13:00 - 24:00", "13:00 - 24:00", "Orario sconosciuto", "Orario sconosciuto", 
"Orario sconosciuto", "Orario sconosciuto", "Orario sconosciuto", 
"Orario sconosciuto", "Orario sconosciuto", "Orario sconosciuto", 
"Orario sconosciuto"), Eventi = c(19.7, 2.19, 0, 0, 0, 0, 0, 
0, 0, 4.6, 1.32, 0.66, 0, 0.66, 0, 0, 0.66, 0, 7.77, 0, 1.2, 
1.2, 0, 0.6, 0.6, 0, 0.6, NA, NA, NA, NA, NA, NA, NA, NA, NA)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -36L)) %>%
ggplot(aes(str_first_up(Reparto), Eventi)) +
        geom_col(aes(fill = Fascia.oraria), position = position_dodge2(preserve = 'total')) +
        theme(
            axis.text.x  = element_text(angle = 45, hjust = 1),
            panel.grid.minor.x = element_line(color = 'gray')
            ) +
        labs(x = NULL, y = 'N. eventi x 100 gg', fill = 'Fascia oraria')

您可以像這樣手動設置行:

p +
  theme(panel.grid = element_blank()) + # remove grid lines
  geom_vline(xintercept = seq(0.5, length(df$Reparto), by = 1), color="gray", size=.5, alpha=.5) # set vertical lines between x groups

其中p是您的原始圖,而df是您的 data.frame。

在此處輸入圖片說明

Obs:為了制作這張圖片,我從你的代碼中刪除了str_first_up() ,因為它不是來自dplyrggplot包(當前版本)。 另外,我在您的主題設置之前添加了theme_bw()

暫無
暫無

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

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