[英]Scatter Plot with Varying Point Sizes
我是新用戶,請原諒我,如果我的問題看起來很簡單。 盡管我研究了Cookbook和統計分析手冊,但我無法根據自己的喜好構建特定的圖表。
我想要繪制的兩個欄目是年齡和收入。 Age采用整數值(40,34,50,...),而收入采用二進制值(<= 50k,> = 50k)。 有32561行不同年齡的數據。 我想創建一個年齡為X軸和收入二元變量的圖作為我的Y軸,圖(年齡,收入)。 這當然會導致兩條平行線的圖,因為收入是一個二元變量,很好。 我試圖從情節中獲得的信息是屬於任何一個收入桶的特定年齡的人數。 我想這樣做的方法是讓圈子大小與每個收入等級中某個年齡段的人數成比例。 例如,如果25歲時有700人在<= 50k的支架中而150則在另一個支架中,那么這兩個點的大小將根據人數而變化。 因此,落入<= 50k桶的700人將由一個大圓圈代表,而后者則是一個小得多的圓圈。 我想為所有年齡段做這個......我希望這是有道理的。 如果需要澄清,請告訴我。 謝謝! 我相信在不久的將來你會再次收到我的回復。
用示例數據回答這些問題會更容易,但在這種情況下,很容易想出一些大致反映問題的東西:
age = rep(c(20, 30, 40, 50, 60), 20)
income = c(rep(">50k", 80), rep("<50k", 20))
df1 = data.frame(age=age, income=income)
首先,我們生成數據的總結,得到了count
的人的年齡和收入每個組合:
library(plyr)
df1_summary = ddply(
df1,
.(age, income),
summarize,
count=length(income)
)
然后使用ggplot2
很容易繪制:
ggplot(df1_summary, aes(age, income, size=count)) +
geom_point()
這是一個使用基礎R圖形的版本,它采用了@Marius的示例數據:
test <- with(df1,table(age,income))
test <- as.matrix(as.data.frame.matrix(test))
plot(
row(test),
col(test),
cex=test/3,pch=20,
xlim=c(0.5,nrow(test)+0.5),
ylim=c(0.5,ncol(test)+0.5),
axes=FALSE,
ann=FALSE
)
axis(1,at=1:nrow(test),labels=rownames(test),cex.axis=0.8)
axis(2,at=1:ncol(test),labels=colnames(test),cex.axis=0.8)
title(xlab="Age Group",ylab="Income")
box()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.