在R中的图中翻转X和Y值(数据也改变轴)

Cap*_*phy 3 plot r

如何在R中绘制图,以便变量的值沿X轴显示,变量名沿Y轴垂直移动?最终,绘图应该看起来垂直,Y轴上的变量名称和X轴上的值.

下面的代码表面上会这样做,但问题是实际的绘图值不会随轴翻转.意思是,该图仍然构造为名称沿着X轴并且值沿着Y轴.

以下变量:

value =数字的列向量

name =与每个数字对应的名称列

plot(value, axes=F, xlab="", ylab= "", type= "b", xlim=c(-5, 50), ylim=c(0, 8))
axis(1)
axis(2, at = 1:length(name), labels = name, las=1, pos=-3.0,cex.axis=.65 )
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jos*_*ien 6

为了方便这方面的灵活性,我喜欢lattice包中的绘图功能:

 library(lattice)

 # First make some example data
 df <- data.frame(name=rep(c("a", "b", "c"), each=5), value=rnorm(15))

 # Then try plotting it in both 'orientations'
 # ... as a dotplot
 xyplot(value~name, data=df)
 xyplot(name~value, data=df)

 # ... or perhaps as a 'box-and-whisker' plot
 bwplot(value~name, data=df)
 bwplot(name~value, data=df)
Run Code Online (Sandbox Code Playgroud)

如果你需要,你也可以用它绘制base graphics,虽然你必须在轴标签上稍微工作:

plot(x=df$value, y=df$name, yaxt="n",
     xlab="value", ylab="name")
axis(2, at=1:3, labels=levels(df$name), las=1)
Run Code Online (Sandbox Code Playgroud)


42-*_*42- 5

一旦使用"plot"基函数,用户坐标就固定了.这就像用墨水书写.以后不可能通过调用轴来翻转它们.这种体操需要更加面向对象的方法,例如格子或ggplot系统.它们允许创建可以更新或修改的对象.如果您有一个ggplot对象,您可以执行以下操作:

 p + coord_flip()
Run Code Online (Sandbox Code Playgroud)

  • +1——没有比这更好的例子来展示 ggplot 图形模型的优雅了。 (2认同)