我有一个包含字符串变量和数字变量的R数据帧,我想根据数值变量的值绘制前10个字符串。
我当然可以非常简单地获得前10个条目:
top10_rank <- rank[order(rank$numerical_var_name),]
我试图想象这个的第一个方法是简单地尝试绘制这个:
ggplot(data=top10_rank, aes(x = top10_rank$numerical_var_name, y = top10_rank$string_name)) + geom_point(size=3)
对于第一个近似值,这个&#34;工作&#34; - 问题是y轴上的字符串按字母顺序排序,而不是按数值排序。
我的偏好是找到一种方法来绘制前10个字符串,而不必费心显示数字变量 - 基本上只是作为一个列表(如果我可以枚举列表更好)。我试图绘制这个,所以它看起来比简单地将文本转储到屏幕上更令人愉快。
任何想法都非常感谢!
答案 0 :(得分:2)
y轴刻度标记可以按字母顺序排序,但是这些点按top10_rank数据帧的顺序(从左到右)绘制。您需要做的是更改y轴的顺序。将此添加到您对ggplot + scale_y_discrete(limits=top10_rank$String)
的调用中,它应该可以正常工作。
ggplot(data=top10_rank, aes(x = top10_rank$Number,
y = top10_rank$String)) + geom_point(size=3) + scale_y_discrete(limits=top10_rank$String)
以下是R图形资源的链接:R Graphics Cookbook