GOOGLE ADS

понедельник, 25 апреля 2022 г.

Как получить один фон сетки в «коровнике», используя plot_grid(), объединяющий два графика вместе? на языке R

В языке R я хочу иметь одну фоновую горизонтальную линию (фоновую сетку), чтобы упростить идентификацию столбцов. Я приведу пример в коде R.

# install.packages("cowplot")
library(ggplot2)
library(cowplot)
df <- data.frame(
supp = rep(c("VC", "OJ"), each = 3),
dose = rep(c("D0.5", "D1", "D2"), 2),
len = c(6.8, 15, 33, 4.2, 10, 29.5)
)
p <- ggplot(df, aes(x = dose, y = len))+
geom_col(aes(fill = supp), width = 0.7)+ coord_flip()+
theme(axis.text.x=element_blank(),axis.ticks.x=element_blank(),
axis.text.y=element_blank(),axis.ticks.y=element_blank()) +
labs(x = "", y = "") +
theme( legend.position = "bottom",
panel.background = element_rect(fill = "transparent"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = "transparent", color = NA))
p
plot_grid(p, p, align = 'h', ncol = 2, rel_widths = c(5, 5))

Результат двух сюжетов такой

Я хочу сделать (фоновую сетку) в виде серых горизонтальных линий, которые разделяют каждый столбец, как на скриншоте, который будет при условии, что здесь
я хочу, чтобы фон проходил по двум графикам в plot_grid без разделения. Потому что мои исходные графики будут такими, но более заранее, предоставляя имена столбцов только на первом графике, и эти строки помогают узнать, какой столбец находится во втором столбце, глядя на имена первых графиков. Спасибо


Решение проблемы

Одним из вариантов было бы удалить пространство между вашими графиками, установив правое/левое plot.marginзначение на ноль, установив значение axis.ticks.lengthна ноль и установив заголовок оси Y на NULL. Наконец, я geom_hlineдобавляю линии «сетки».

Примечание: я поменял роль xи y, чтобы избавиться от coord_flip. Облегчает (для моего мозга (;) настройку.

# install.packages("cowplot")
library(ggplot2)
library(cowplot)
df <- data.frame(
supp = rep(c("VC", "OJ"), each = 3),
dose = rep(c("D0.5", "D1", "D2"), 2),
len = c(6.8, 15, 33, 4.2, 10, 29.5)
)
p <- ggplot(df, aes(y = dose, x = len)) +
geom_col(aes(fill = supp), width = 0.7) +
geom_hline(yintercept = 0:3 +.5) +
labs(x = "", y = NULL) +
theme(
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.ticks.length = unit(0, "pt"),
legend.position = "bottom",
panel.background = element_rect(fill = "transparent"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = "transparent", color = NA)
)
plot_grid(
p + theme(plot.margin = margin(5.5, 0, 5.5, 5.5)),
p + theme(plot.margin = margin(5.5, 5.5, 5.5, 0)),
align = "h", ncol = 2, rel_widths = c(5, 5)
)

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...