Вопрос с радиальными диаграмами

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
neroznik
Интересующийся
Сообщения: 46
Зарегистрирован: 18 янв 2013, 10:27
Репутация: 0
Откуда: Бишкек Киргизия

Вопрос с радиальными диаграмами

Сообщение neroznik » 17 фев 2016, 04:34

Добрый день.
Подскажите, возможно ли осуществить следущее в R? Есть табличные данные где указаны процент растительного покрова определенных мест и их Aspect (не уверен с переводом на русский, наверное "направление по сторонам света"). Aspect дан в градусах. Возникла идея сделать радиальную диаграмму, где сама окружность будет являться Aspect-ом, а растительный покров - самой диаграмой. Что-то вроде такого (нарисовал в paint на скорую руку)
картинкаПоказать
Изображение
Возможно ли что-то подобное осуществить в R?
Честно говоря гугл не помог с поиском скрипта для создания радиальных диаграмм в R (только пироги да коробки), поэтому за подсказку буду тоже очень благодарен.

gamm
Гуру
Сообщения: 2557
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 530
Ваше звание: программист
Откуда: Казань

Re: Вопрос с радиальными диаграмами

Сообщение gamm » 17 фев 2016, 11:09

neroznik писал(а):возможно ли осуществить следущее в R?
там все возможно, для вашего случая хватит команды plot() и учебника геометрии за 7 класс (или когда там нынче синусы/косинусы проходят), чтобы данные подготовить. Скрип готовый вряд ли кто для вас написал ...

sergsh
Активный участник
Сообщения: 195
Зарегистрирован: 20 фев 2013, 21:48
Репутация: 30

Re: Вопрос с радиальными диаграмами

Сообщение sergsh » 17 фев 2016, 23:27

Попробуйте набрать в поисковике "R circle diagram"
и далее нажимайте "Картинки по запросу r circle"

там будет много разных круговых диаграмм, и возможно что-то вам подойдет ...

Иван Стрельников
Интересующийся
Сообщения: 40
Зарегистрирован: 11 авг 2011, 13:23
Репутация: 15

Re: Вопрос с радиальными диаграмами

Сообщение Иван Стрельников » 18 фев 2016, 02:51

Для таких целей подходит пакет circular.

На всякий случай, может кому пригодится. Для задач, когда нужно много чего поворачивать на заданный угол, для меня лично, находкой стали матрицы вращения.
Пример:

Код: Выделить всё

rot_mat <- function(x, y, ang){
	ang <- ang*pi / 180 # градусы в радианы
	mat <- matrix(c(cos(ang), -sin(ang), sin(ang), cos(ang)), 2) # собственно матрица
	xy <- mat %*% matrix(c(x, y),2) # произведение матриц
	return(as.numeric(xy))
}

# Наши данные
set.seed(22222)
Data<-data.frame(Veg=c(rnorm(10, mean=5)), Aspect=seq(0,270, by=30))

# Поворачиваем все
Circ_data<-apply(Data, 1, function(x){rot_mat(0,x[1],x[2])})
# Наносим на график
plot(t(Circ_data))
polygon(t(Circ_data))
Вообще удобно, если данные трехмерные (матрицу, естественно нужно допилить до трехмерного варианта).

Ответить

Вернуться в «R»