使用基本绘图函数翻转 x 轴和 y 轴
Flip x and y axis using basic plot function
我有一个带有级别的 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不接受
感谢任何意见!
看来您要找的是条形图而不是散点图。假设您有这样的数据:
数据:
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')
结果:
生成的条形图如下所示:
我有一个带有级别的 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不接受
感谢任何意见!
看来您要找的是条形图而不是散点图。假设您有这样的数据:
数据:
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')
结果:
生成的条形图如下所示: