[英]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')
結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.