我想用一些x轴标签绘制一些数据的条形图,但到目前为止,我一直遇到同样的问题,因为轴缩放完全是禁止的,因此我的标签被错误地定位在条形图下方。我能想到的最简单的例子:
x = c(1:81)
barplot(x)
axis(side=1,at=c(0,20,40,60,80),labels=c(20,40,60,80,100))
字符串
正如您所看到的,x轴并没有沿着整个图延伸,而是在两者之间的某个地方停止。在我看来,这个问题似乎很简单,但我不知何故,我无法解决它,我无法找到任何解决方案:(
任何帮助都非常感谢。
3条答案
按热度按时间webghufk1#
问题是
barplot
实际上是为绘制分类数据而设计的,而不是数字数据,因此它在设置水平轴刻度方面几乎是自己做的。解决这个问题的主要方法是通过将barplot
的结果保存到一个变量中来恢复条中点的实际x位置,但是正如你在下面看到的,我还没有想出一个优雅的方法来在基本图形中做你想要的事情。也许别人能做得更好。字符串
您可以在此处看到实际中点位置为0.7、1.9、3.1、...不是1 2 3...
这是非常快的,* 如果 * 你不想把轴从0扩展到100:
型
这是我在基本图形中做得最好的一次尝试:
型
你可以试试这个,但酒吧不是很漂亮:
型
或者在
ggplot
中:型
大多数统计图形书呆子会告诉你,用点或线而不是条来绘制定量(x,y)数据更好(非数据墨水,Tufte,等等等等:-)
i7uq4tfw2#
不确定你到底想要什么,但如果它是有标签运行从一端到另一端均匀放置(但不一定准确),然后:
字符串
对我来说,困惑的是为什么你想在0处标记“20”。但这是一种方法。
我认为Ben关于x轴是(有序的)类别的观点基本上是正确的,但我不同意y轴的值是分类的。
vddsk6oq3#
我遇到了 bat 图同样恼人的特性-x坐标变得狂野。我会添加另一种方法来显示问题,那就是在情节中添加更多的线条。
字符串
我最好的办法是定义一个新的条形图函数,它也将接受参数“at”来绘制条形图的位置。
型
x1c 0d1x的数据
lines命令穿过最后一个条形图-x刻度的工作原理和我们天真地预期的一样,但是现在你也可以定义你想要的任何条形图的位置(你可以对这个函数进行更多的操作,以获得与其他R绘图函数相同的属性)。