【问题标题】:R: Barplot height must be a vector or matrix [duplicate]R:条形图高度必须是向量或矩阵[重复]
【发布时间】:2018-05-15 19:55:26
【问题描述】:

我正在尝试使用分组条形图制作条形图,但出现此错误:

'height' 必须是向量或矩阵

我不知道为什么。我的代码是...

rebDef=sample(50:100,14,replace=F)
rebOf=sample(20:40, 14, replace=F)
rebTot=sample(70:140, 14, replace=F)
data=data.frame(rebDef,rebOf,rebTot)
v <- c("Equipo A", "Equipo B", "Equipo C", "Equipo D", "Equipo E", "Equipo F", "Equipo G", "Equipo H", "Equipo I", "Equipo J", "Equipo K", "Equipo M", "Equipo N", "Equipo O")
names <- data.frame(v)
rownames(data) <- names[, 1]

barplot(data, beside=T , legend.text=T, col=c("red" , "green", "blue"), ylim=c(0,140), ylab="height")

而我的数据输入是...

structure(list(rebDef = c(93L, 59L, 80L, 58L, 71L, 70L, 83L, 
77L, 99L, 52L, 84L, 98L, 100L, 86L), rebOf = c(20L, 38L, 32L, 
35L, 36L, 29L, 30L, 26L, 39L, 22L, 25L, 28L, 23L, 33L), rebTot = c(99L, 
105L, 107L, 72L, 118L, 87L, 115L, 88L, 85L, 131L, 137L, 84L, 
126L, 136L)), .Names = c("rebDef", "rebOf", "rebTot"), row.names = c("Equipo A", 
"Equipo B", "Equipo C", "Equipo D", "Equipo E", "Equipo F", "Equipo G", 
"Equipo H", "Equipo I", "Equipo J", "Equipo K", "Equipo M", "Equipo N", 
"Equipo O"), class = "data.frame")

最后,称为data的数据框的内容是……

         rebDef rebOf rebTot
Equipo A     93    20     99
Equipo B     59    38    105
Equipo C     80    32    107
Equipo D     58    35     72
Equipo E     71    36    118
Equipo F     70    29     87
Equipo G     83    30    115
Equipo H     77    26     88
Equipo I     99    39     85
Equipo J     52    22    131
Equipo K     84    25    137
Equipo M     98    28     84
Equipo N    100    23    126
Equipo O     86    33    136

我做错了什么?

【问题讨论】:

    标签: r bar-chart


    【解决方案1】:

    我认为问题可能是您试图将 DataFrame 作为高度参数传递。这应该只需要一个向量或一个矩阵。你可以试试这样:

    barplot(as.matrix(data), beside=T , legend.text=T, col=c("red" , "green", 
    "blue"), ylim=c(0,140), ylab="height")
    

    希望这对您有所帮助。

    【讨论】:

    • 有效!!!但是在我看来,这些条是按列而不是按行分组的。你知道我怎么能逐行告诉 barplto 哪个组吗?
    • 是的,您需要做的就是通过在 as.matrix 调用周围添加 at() 来转置矩阵: barplot(t(as.matrix(data)), beside=T , legend.text =T, col=c("red" , "green", "blue"), ylim=c(0,140), ylab="height") 试试看是否有帮助。
    • 有效!!!谢谢!!!抱歉,但现在我遇到了两个新问题 :( 图表是正确的,但在我看来并不是每组条形的所有标签,图例文本在条形上方,我想在右边图表...有可能做到所有这些吗?
    • y
    • 你可以试试上面的代码。我将转置矩阵命名为“y”,因为它更容易在代码中阅读。我将团队名称更改为垂直显示。以下两个链接非常有用:stackoverflow.com/questions/9981929/…stackoverflow.com/questions/18688847/…
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2021-12-29
    相关资源
    最近更新 更多