我想将“收入”类别从1、2、3、4、5重命名为图中收入的真实的值。我试过这个代码,但它不起作用。有人能解释一下为什么吗?
ggplot(data=subset(trips_renamed,income!="99")) +
geom_bar(mapping = aes(x = income,fill="income"))+
scale_x_discrete(labels=c("<=4000","4001-8000","8001-12000","12001-
16000",">16000",position="bottom"))+
labs(y= "Total number of trips", x="Income Classes")+
theme(legend.position = "none")
2条答案
按热度按时间4jb9z9bj1#
如果您提供了一个最小的可重复示例,则查找和测试答案会容易得多。但是,下面显示了如何更改与您的问题类似的图的比例。由于x的值是数字,因此我们需要使用(有点违反直觉)
scale_x_continuous
来更改标签 * 动态 *退货:
lf3rwulv2#
您的问题似乎与
trips_renamed$income
是"integer"
还是"numeric"
类有关。因此,scale_x_discrete()
应替换为scale_x_continuous()
。您可以使用scale_x_continuous()
或转换为离散值(因子),然后使用scale_x_discrete()
。下面是使用以下虚拟数据集的两个示例。选项1:重新标记连续轴
如果
class(trips_renamed$income)
是"numeric"
或"integer"
,那么您需要使用scale_x_continuous()
。重新标记需要您指定breaks=
和labels=
参数,并且它们必须具有相同的长度。这应该可以工作:选项2:转换为因子并使用离散比例
另一种选择是先转换为因子,然后使用
scale_x_discrete()
。这里不需要breaks=
参数(使用因子的水平):您将得到与上面相同的图。
选项2a:因子和定义标签在一起
如果你真的想变得很巧妙,你可以在定义因子的同时定义标签,它们将被用于轴标签而不是水平的名称:
这些一起应该可以让您很好地了解
ggplot2
在选择如何标记轴时的工作方式。