Как сделать диаграмму, где ось X содержит пробелы - PullRequest
1 голос
/ 10 июня 2019

Я бы хотел, чтобы ось х моей диаграммы была непрерывной шкалой.

Вот мои данные:

list(
 Century = c(1, 2, 3, 4, 5), 
 CenturyLabel = c("1st", "Bit later", "", "", "Post-Roman"), 
 Value = c(.2, .3, 0, 0, .4) ) %>% as_tibble()

Я надеюсь увидеть бары для 1-го, 2-го и 5-го веков с пробелами для 3-го и 4-го.

1 Ответ

1 голос
/ 10 июня 2019

Хитрость заключается в том, чтобы определить переменную оси x как фактор .

library("dplyr")

df <- tibble(
 Century = c(1, 2, 3, 4, 5), 
 CenturyLabel = c("1st", "Bit later", "", "", "Post-Roman"), 
 Value = c(.2, .3, 0, 0, .4) )

df$CenturyFactor <- factor(df$Century, labels = df$CenturyLabel), ordered = TRUE)

Затем вы можете использовать CenturyFactor в качестве переменной оси X, и вы увидите разрыв с любыми правильными библиотеками черчения ... С большой оговоркой, что любые повторяющиеся метки приводят к слиянию веков!

Один из способов обойти это - построить Century (от 1 до 5), но настроить метки так, чтобы они показывали CenturyLabel. Это будет зависеть от библиотеки. Факторы не нужны.

Использование ggplot2:

library("ggplot2")

ggplot(df, aes(x = Century, y = Value)) +
  geom_col() +
  scale_x_continuous(labels = df$CenturyLabel, breaks = df$Century)

Plot with gaps

...