Частота графика значения 2 факторов на одном графике в R - PullRequest
2 голосов
/ 22 октября 2011

Я хотел бы построить частоту переменной цветовой кодировки для двухфакторных уровней, например, синие столбцы должны быть историей уровня A, а зеленый - историей уровня B, и на одном и том же графике? Возможно ли это с помощью команды Hist? Помощь по истории не учитывает фактор. Есть ли другой путь?

Мне удалось сделать это вручную, но я хочу спросить, есть ли более автоматический метод

enter image description here

Большое спасибо EC

PS. Мне не нужны графики плотности

Ответы [ 5 ]

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

На всякий случай, если другие не ответили, это способ, который удовлетворяет. Недавно мне пришлось иметь дело со сложением гистограмм, и вот что я сделал:

data_sub <- subset(data, data$V1 == "Yes") #only samples that have V1 as "yes" in my dataset #are added to the subset

hist(data$HL)
hist(data_sub$HL, col="red", add=T)

Надеюсь, вы это имели в виду?

1 голос
/ 22 октября 2011

Довольно непонятно, что у вас за макет данных.Гистограмма требует, чтобы у вас была переменная, порядковая или непрерывная, чтобы можно было создавать разрывы.Если у вас также есть отдельный фактор группировки, вы можете построить гистограммы с учетом этого фактора.Хороший проработанный пример такой группировки и наложения кривой плотности предлагается во втором примере на странице справки для функции histogram в пакете решетки.Second lattice::histgram example

Хороший ресурс для изучения относительных преимуществ построения решеток и ggplot2 - блог Learning R. Это первая из серии из нескольких частей при параллельном сравнении = 1006 * двух систем печати:

library(lattice)
 library(ggplot2)
 data(Chem97, package = "mlmRev")
#The lattice method:
pl <- histogram(~gcsescore | factor(score), data = Chem97)
 print(pl)

Lattice histogram

# The ggplot method:
 pg <- ggplot(Chem97, aes(gcsescore)) + geom_histogram(binwidth = 0.5) +
     facet_wrap(~score)
 print(pg)

enter image description here

0 голосов
/ 22 октября 2011

Я согласен с другими, что график плотности более полезен, чем объединение цветных полос гистограммы, особенно если значения группы смешаны.Это было бы очень сложно и не очень вам скажет.У вас есть отличные предложения от других на графиках плотности, вот мои 2 цента для графиков плотности, которые я иногда использую:

y <- rnorm(1000, 0, 1) 
x <- rnorm(1000, 0.5, 2) 
DF <- data.frame("Group"=c(rep(c("y","x"), each=1000)), "Value"=c(y,x))

library(sm)

with(DF, sm.density.compare(Value, Group, xlab="Grouping"))
title(main="Comparative Density Graph")
legend(-9, .4, levels(DF$Group), fill=c("red", "darkgreen")) 
0 голосов
/ 22 октября 2011

Это очень возможно.

У меня не было данных для работы, но вот пример гистограммы с разными цветными полосами.Отсюда вам нужно использовать мой код и выяснить, как заставить его работать для факторов вместо хвостов.

Гистограмма ОСНОВНОЙ НАСТРОЙКИ <- hist (scale (vector)), breaks =, plot = FALSE)сюжет (гистограмма, col = ifelse (abs (гистограмма $ breaks) <# of SD, цвет 1, цвет 2)) </p>

#EXAMPLE
x<-rnorm(1000)
histogram <- hist(scale(x), breaks=20 , plot=FALSE)
plot(histogram, col=ifelse(abs(histogram$breaks) < 2, "red", "green"))
0 голосов
/ 22 октября 2011

Я не думаю, что вы можете легко сделать это с помощью гистограммы, так как вам придется «чередовать» столбцы с обоих уровней фактора ... Для этого потребуется некоторая «дискретизация» теперь непрерывной оси x (то есть его нужно разделить на «категории», и в каждой категории у вас будет 2 бара для каждого факторного уровня ...

Но это довольно просто и без проблем, если вы хорошо справляетесь с построением функции линии плотности:

y <- rnorm(1000, 0, 1)
x <- rnorm(1000, 0.5, 2)
dx <- density(x)
dy <- density(y)
plot(dx, xlim = range(dx$x, dy$x), ylim = range(dx$y, dy$y), 
     type = "l", col = "red")
lines(dy, col = "blue")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...