【问题标题】:Flip x and y axis using basic plot function使用基本绘图功能翻转 x 和 y 轴
【发布时间】:2020-05-27 09:01:21
【问题描述】:

我有一个矢量 v3 级别:setosa versicolor virginica

当我使用基本绘图功能绘制矢量时;

plot(v3, type = "s", xlim = NULL, ylim = c(0,50), 
main = "Plot 2", ylab = 'Frequency', col = "blue")

我得到以下情节

但我想创建的输出如下所示:

我知道存在某些(更优雅的)解决方案,但我想在不安装和加载额外包的情况下创建它。我用轴尝试了以下操作:

axis(1, at = c(0,50), labels = FALSE, tick = TRUE)
axis(2, at = levels(v3), labels = FALSE, tick = TRUE)

但 R 不会接受。

感谢您的任何意见!

【问题讨论】:

  • 尝试查看?barplot,它有一个horiz= 参数以使事物水平化。
  • @MrFlick 感谢您的建议。似乎是一个很好的解决方案,但对我不起作用,因为 R 返回“高度必须是向量或矩阵”。 v3 是 class= "factor",这会限制我如何使用它吗?
  • 然后您可以将其传递给table(),正如@ChrisRuehlemann 的回答中所做的那样
  • 感谢您的帮助!

标签: r plot axis


【解决方案1】:

看来您正在寻找的是条形图而不是散点图。假设您有这样的数据:

数据

set.seed(321)
v3 <- sample(c("setosa", "versicolor", "virginica"), 100, replace = T)
v3
  [1] "versicolor" "versicolor" "setosa"     "setosa"     "setosa"     "versicolor" "versicolor" "setosa"    
  [9] "virginica"  "virginica"  "setosa"     "virginica"  "versicolor" "virginica"  "versicolor" "virginica" 
 [17] "setosa"     "versicolor" "virginica"  "virginica"  "versicolor" "versicolor" "virginica"  "versicolor"
 [25] "virginica"  "versicolor" "setosa"     "versicolor" "setosa"     "virginica"  "setosa"     "setosa"    
 [33] "virginica"  "versicolor" "setosa"     "virginica"  "versicolor" "setosa"     "versicolor" "setosa"    
 [41] "virginica"  "versicolor" "setosa"     "virginica"  "setosa"     "versicolor" "versicolor" "setosa"    
 [49] "setosa"     "virginica"  "virginica"  "virginica"  "setosa"     "virginica"  "versicolor" "versicolor"
 [57] "setosa"     "setosa"     "virginica"  "setosa"     "setosa"     "versicolor" "virginica"  "virginica" 
 [65] "virginica"  "setosa"     "virginica"  "versicolor" "versicolor" "versicolor" "virginica"  "versicolor"
 [73] "virginica"  "setosa"     "setosa"     "versicolor" "virginica"  "versicolor" "versicolor" "versicolor"
 [81] "versicolor" "virginica"  "setosa"     "virginica"  "setosa"     "versicolor" "virginica"  "setosa"    
 [89] "versicolor" "versicolor" "virginica"  "setosa"     "virginica"  "virginica"  "virginica"  "versicolor"
 [97] "setosa"     "virginica"  "virginica"  "setosa"

你不能做的是绘制因子水平;您只能计算数据中级别出现的次数:您可以绘制这些频率。您可以通过使用table 函数将向量v3 制成表格来做到这一点。要将条形翻转到 水平 位置,您可以使用参数 horiz = TRUE(这样做还需要将标签 Frequency 放在 x 轴而不是 y 轴上):

barplot(table(v3), horiz = T, main = "Plot 2", 
        xlab = 'Frequency', 
        ylab = 'Species',
        col = 'blue')

结果

生成的条形图如下所示:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2012-06-08
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2013-06-07
    相关资源
    最近更新 更多