У меня есть набор данных, аналогичный приведенному ниже примеру
df <- structure(list(Species = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,3L,
1L, 2L, 3L), .Label = c("setosa", "versicolor", "virginica"), class =
"factor"), flower_att = c("Sepal.Length", "Sepal.Length", "Sepal.Length",
"Sepal.Width", "Sepal.Width", "Sepal.Width", "Petal.Length", "Petal.Length",
"Petal.Length", "Petal.Width", "Petal.Width", "Petal.Width"), measurement =
c(5.1, 7, 6.3, 3.5, 3.2, 3.3, 1.4, 4.7, 6, 0.2, 1.4, 2.5), month =
c("January", "February", "January", "February", "January", "February",
"January", "February", "January", "February", "January", "February")),
row.names = c(NA,-12L), class = "data.frame")
Я хочу отображать рядом друг с другом длину и ширину чашелистиков для каждого вида и месяца. Я надеялся сделать это, используя диагональную разделенную ячейку на тепловой карте с двумя разными цветными обозначениями, то есть красным для длины и синим для ширины. Если возможно, я бы хотел, чтобы значение отображалось в сегменте ячейки. Мой поиск до сих пор нашел этот ближайший пример но я ищу работоспособную версию ggplot.
Моя собственная попытка в настоящее время выглядит так, как показано ниже. Я не могу понять, как разбить клетки.
ggplot(df, aes(x=month, y=Species)) + geom_tile(aes(fill=measurement),
color="black") + theme(axis.text.x = element_text(angle=45, hjust = .5)) +
geom_text(aes(label = round(measurement, .1))) + scale_fill_gradient(low =
"white", high = "red")
Обновить
После серьезного рывка в Интернете я нашел потенциальный вариант с использованием geom_segment
и geom_text_repel
, см. Ниже. Может ли кто-нибудь сказать мне, является ли этот вариант жизнеспособным? Если да, то как я могу получить его в соответствии с вышеуказанными требованиями?
Я готов переключить scale_fill_gradient
на scale_fill_manual
или другую альтернативу, моя основная цель - отображать все данные рядом
ggplot(df, aes(x=month, y=Species)) +
geom_tile(aes(fill=measurement), color="black") +
theme(axis.text.x = element_text(angle=45, hjust = .5)) +
geom_text_repel(aes(label = round(measurement, .1))) +
scale_fill_gradient(low = "white", high = "red")
gb <- ggplot_build(p)
p + geom_segment(data=gb$data[[1]],
aes(x=xmin, xend=xmax, y=ymin, yend=ymax), color="black")
ggplot(df, aes(x=month, y=Species)) + geom_tile(aes(fill=measurement), color="black") + theme(axis.text.x = element_text(angle=45, hjust = .5)) + geom_text(aes(label = round(measurement, .1))) + scale_fill_gradient(low = "white", high = "red")
- person AudileF   schedule 25.01.2021geom_triangle
, один доступен на GitHub, другой только на исходный код на rdrr.io. Оба рисуют треугольники, но размер первого очень сложно изменить, а остальная эстетика последнего ломается - они превращаются в категориальные, и нет немедленного обходного пути, чтобы сделать его непрерывным. - person tjebo   schedule 27.01.2021