在具有离散 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')
Run Code Online (Sandbox Code Playgroud)
您可以像这样手动设置行:
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
Run Code Online (Sandbox Code Playgroud)
哪里p是你的原始图,哪里df是你的数据框。
Obs:为了生成这张图片,我str_first_up()从您的代码中删除了 ,因为它不是来自dplyr或ggplot包(当前版本)。另外,我theme_bw()在你的主题设置之前添加了。