2009-10-02 4 views
8

Учитывая следующую диаграмму ggplot2:Граф фактором в ggplot2 диаграмме

ggplot(my_data, aes(colour=my_factor) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

Я хотел бы сделать размер точек пропорционален кол-my_factor для этого предварительного/комбинации тока.

ggplot(my_data, aes(colour=my_factor, 
       size=<something-here>(my_factor)) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

Любые идеи?

== Edit ==

Вот очень тривиальный пример, основанный на мили на галлон данных. Давайте определим "great_hwy", как Hwy> 35, и "great_cty", как Cty> 25:

mpg$great_hwy[mpg$hwy > 35] <-1 
mpg$great_hwy[mpg$hwy <= 35] <-0 
mpg$great_hwy <- factor(mpg$great_hwy) 

mpg$great_cty[mpg$cty > 25] <- 1 
mpg$great_cty[mpg$cty <= 25] <- 0 
mpg$great_cty <- factor(mpg$great_cty) 

Если мы наносим great_hwy против great_cty, он не скажет нам много:

ggplot(mpg) + geom_point(aes(x=great_cty, y=great_hwy)) 

Как могу ли я сделать точки данных больше по размеру в зависимости от количества точек x/y? Надеюсь, что это очистит, но дайте мне знать иначе.

+1

Небольшой образец данных был бы очень полезен здесь ... вы можете выбрать один из? Наборов данных, если хотите. – Shane

+1

Я не понимаю, что вы подразумеваете под «подсчетом my_factor для этой предыдущей/текущей комбинации». Существует ли более чем одна точка данных для каждого x/y? Итак, вы ищете решение проблемы с перенастройкой? Или вы имеете в виду что-то еще? – Harlan

+0

@ Шейн, я работаю над лучшим примером в соответствии с вашим предложением. @Harlan, для каждого x/y имеется много точек данных. Я хотел бы построить одну точку данных для каждого x/y, и я хочу, чтобы размер указанной точки данных был пропорционален числу пар x/y. – hgmnz

ответ

20

Вы можете сделать это, сославшись на внешний ggplot, но одна из великих вещей о ggplot заключается в том, что вы можете сделать многие из этих статистических данных внутренне!

Используя ваш пример миль на галлон выше:

ggplot(mpg) + 
    geom_point(aes(x=great_cty, y=great_hwy, 
       size=..count..), stat="bin") 

alt text

+0

Это отличное решение. Благодаря! – Shane

+0

Именно то, что я искал. Похоже, что * большинство * автомобилей не очень хороши с точки зрения городского и автомобильного пробега;) – hgmnz

+0

Вы также можете проверить эту страницу, просто чтобы убедиться, что размер точек - это то, что вы думаете (область радиуса?): http://had.co.nz/ggplot2/scale_size.html Я думаю, что пропорциональные области традиционно предпочитают пропорциональные радиусы. –

Смежные вопросы