Построение контрастных графиков из набора данных с использованием R - PullRequest
1 голос
/ 23 октября 2010

У меня есть набор данных (1000+ животных) за два сезона (зима и лето), и я хотел бы продемонстрировать различия в характере длины беременности (дней) в эти два сезона. Мои данные похожи на это:

id <- c(1,2,3,4,5,6,7,8,9,10)
season <- c(1,1,2,2,1,2,1,1,2,1)
gest <- c(114,NA,123,116,NA,120,110,NA,116,119)

data <- cbind(id,season,gest)

Я бы хотел что-то вроде этого:

http://had.co.nz/ggplot2/graphics/55078149a733dd1a0b42a57faf847036.png

ИЛИ любая подобная форма графика, которая дала бы мне хороший контраст.

Спасибо за вашу помощь,

Bazon

Ответы [ 3 ]

2 голосов
/ 23 октября 2010
library(ggplot2)
df <- data.frame(id=id,season=season,gest=gest)
qplot(gest,data=df,geom="density",fill=season,alpha=I(0.2))

Это должно дать что-то похожее на этот пример, но вы можете поиграть с параметром alpha, чтобы получить правильную прозрачность.

1 голос
/ 23 октября 2010

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

График, показанный ниже, был создан с использованием графического пакета Base в R и (превосходного) пакета R SVGAnnotatio n,Duncan Temple Lang, для создания интерактивных элементов (путем повторного рендеринга изображения в SVG и последующей обработки результирующего XML).

(хотя график был создан с использованием R и SVGAnnotate, изображение ниже изПравительство Великобритании Сайт ).

alt text

0 голосов
/ 23 октября 2010

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

data <- as.data.frame(data)
d1 <- density(data$gest[which(data$season==1)], na.rm=TRUE)
d2 <- density(data$gest[which(data$season==2)], na.rm=TRUE)
plot(d1, ylim=c(0, max(d1$y,d2$y)), xlim=range(c(d1$x, d2$x)),
  main="Length of gestation", xlab="Length (days)", col="blue", lwd=2)
polygon(d1$x, d1$y, col=rgb(0, 0, 1, 0.5), lty=0)
points(d2, t="l", col="red", lwd=2)
polygon(d2$x, d2$y, col=rgb(1, 0, 0, 0.5), lty=0)

В качестве альтернативы проверьте функцию densityplot пакета lattice, хотя я не уверен, как заполнять строки.

PS: ваш набор данных настолько мал? Графики плотности, вероятно, НЕ подходят, если это так (график рассеяния был бы лучше)

EDIT

Если вы хотите сделать это с гистограммами, вы можете сделать что-то вроде:

hist(data$gest[which(data$season==1)], main="Length of gestation", 
    xlab="Length (days)", col=rgb(0, 0, 1, 0.5))
# Note the add=TRUE parameter to superimpose the histograms
hist(data$gest[which(data$season==2)], col=rgb(1, 0, 0, 0.5), add=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...