警告:对 R 来说还是新手。
我正在尝试在 R 中构建一些图表(特别是气泡图),以显示对竞选活动的政治捐款。这个想法是 x 轴将显示贡献的数量,y 轴将显示贡献的数量,以及在此级别贡献的总金额的圆圈面积。
数据如下所示:
CTRIB_NAML CTRIB_NAMF CTRIB_AMT FILER_ID
John Smith $49 123456789
该FILER_ID
字段用于过滤特定候选人的数据。
我使用以下函数将此数据框转换为气泡图(感谢此处和此处的帮助)。
vals<-sort(unique(dfr$CTRIB_AMT))
sums<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, sum)
counts<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, length)
symbols(vals,counts, circles=sums, fg="white", bg="red", xlab="Amount of Contribution", ylab="Number of Contributions")
text(vals, counts, sums, cex=0.75)
但是,这会导致 x 轴上的间隔过多。总共有几百万条记录,为一些候选人划分仍然可能导致大量数据。如何将绝对贡献转换为范围?例如,我如何将它们分组vals
为范围,例如 0-10、11-20、21-30 等?
- - 编辑 - -
在评论之后,我可以转换vals
为数字,然后分割成间隔,但我不确定我如何将它组合回气泡图语法。
new_vals <- as.numeric(as.character(sub("\\$","",vals)))
new_vals <- cut(new_vals,100)
但重新绘制:
symbols(new_vals,counts, circles=sums)
是荒谬的 - 所有值在 x 轴上排列为零。