【发布时间】:2020-11-07 20:00:52
【问题描述】:
我正在尝试绘制 2 个职业及其收入概率的叠加图:
> data.frame(income = rep(c("$10 to $20", "$20 to $30", "$30 to $40"), 2), profession=c("A", "A", "A", "B", "B", "B"), prob=c(10, 50, 40, 20, 50, 30))
income profession prob
1 $10 to $20 A 10
2 $20 to $30 A 50
3 $30 to $40 A 40
4 $10 to $20 B 20
5 $20 to $30 B 50
6 $30 to $40 B 30
不幸的是,当收入开始具有像“100”这样的值时,这不起作用,因为它按字母顺序排序,所以我们得到一个像 (10, 100, 20, 30) 这样的 x 轴.
当我有一个职业时,我可以使用df$income <- factor(df$income, levels = df$income),但这在此处不起作用:
> df$income <- factor(df$income, levels = df$income)
Error in `levels<-`(`*tmp*`, value = as.character(levels)) :
factor level [4] is duplicated
有什么办法吗?
这就是我试图绘制的方式:
ggplot(df, aes(x=income, y=prob, fill=profession)) + geom_bar(stat='identity', position='identity', alpha=0.5)
【问题讨论】:
-
如果您没有太多的收入等级,您可以使用蛮力并在编写因子函数时明确指定它们,例如级别 = I1、I2、I3。由于您的条目是字符串,因此明确定义它们不应更改您的计算。