#r #plot #overlap
#r #график #перекрытие
Вопрос:
Я делаю график, на котором есть перекрывающиеся значения, потому что оба x и y являются дискретными. Я искал и нашел примеры, в которых они делают площадь точки пропорциональной количеству точек данных, которые перекрываются в одной точке xy, но то, что я хотел бы иметь возможность сделать, это построить график количества точек, которые перекрываются. Так, например, если точка (5, 7) повторялась 7 раз, я бы хотел, чтобы в этой точке отображалось число «7», а не символ. Я чувствую, что это должно быть возможно, но не могу понять, как это сделать.
Вот некоторый код, который генерирует график, для которого я надеюсь это сделать:
рабочий <- 1:10
дефекты <- t(матрица(rbinom(200, 100, 0.1), ncol=10))
matplot(рабочий, дефекты)
Заранее спасибо за любую помощь, которую вы можете предоставить!
Комментарии:
1. Почему бы вам просто не подсчитать количество дубликатов в отдельном столбце и использовать это в качестве символа. Просто удалите все дубликаты, и вы сможете отобразить его
Ответ №1:
Добро пожаловать в SO!
Вам нужно получить «количество» наблюдений для каждой пары x, y, а затем вы можете использовать аннотации для получения своего графика. Вот пример использования data.table
и ggplot2
:
library(data.table)
library(ggplot2)
# using a sample dataset
dat <- as.data.table(mtcars)
# creating a variable called "count" for no. of overlaps for a given (gear,carb) pair
ggplot(dat[, .(count = .N), by = .(gear, carb)])
geom_text(aes(x = gear, y= carb, label = count) )
Вы можете форматировать текст любым удобным для вас способом (шрифт, размер и т.д.) Или комбинировать с другими элементами, например, добавить geom_point
, чтобы вы видели точку вместе с текстом — вы можете установить прозрачность или размер в зависимости от количества перекрывающихся точек ( count
в этом примере).
# Using nudge_x, nudge_y to avoid marker and text overlap
ggplot(dat[, .(count = .N), by = .(gear, carb)])
geom_text(aes(x = gear, y= carb, label = count), nudge_x = 0.05, nudge_y = 0.05)
geom_point(aes(x = gear, y = carb), color = 'dark red')
Надеюсь, это полезно!
Комментарии:
1. ОЧЕНЬ полезно! Большое вам спасибо!
2. Хорошо, пожалуйста, «примите» ответ, если он работает для вас — поэтому он помечен как решаемый.
3. Мне просто нужно было проголосовать за это или есть что-то еще? Я не вижу кнопки «принять». извините, новичок на сайте. Спасибо!
4. @HaroldBuck вы должны увидеть галочку под кнопкой upvote, читайте здесь: meta.stackexchange.com/questions/5234 /…
5. Спасибо! Многое объяснено.