我有一个数据框 df,它看起来是这样的:
a b c d e f g h i j k l m
1a 4 4 3 4 3 4 3 4.0 4.0 4 4 4 3.9
1b 9 9 9 9 9 9 9 8.1 8.8 9 9 9 8.5
1c 8 8 9 8 9 8 8 8.0 9.0 8 9 8 8.3
1d 8 8 8 9 8 9 8 8.0 8.0 8 8 8 8.5
1e 4 4 4 4 4 4 4 4.0 4.0 4 4 4 4.0
2a 3 4 3 4 3 4 3 4.0 3.0 4 3 4 3.8
2b 8 8 8 8 8 8 8 8.0 8.0 8 8 8 8.0
2c 8 8 8 8 8 8 8 9.0 8.0 9 8 8 8.3
2d 8 9 8 8 8 9 8 9.0 8.0 9 8 9 8.0
2e 4 3 4 3 4 4 4 4.0 4.0 4 4 3 3.9
我正在使用plotrix
anddevtools
包,并且已经安装了它们,并且barp2
功能如下:
# install the packages and load the barp2 function
install.packages('plotrix')
install.packages('devtools')
install_url("http://cran.r-project.org/src/contrib/Archive/plotrix/plotrix_3.5-2.tar.gz")
source_gist("https://gist.github.com/tleja/8592929")
# load the packages
library(plotrix)
library(devtools)
我正在使用的修改后的代码 ( barp2
) 可在此处获得。
我正在尝试在上面提供的数据框中绘制数据,如下所示:
par(mar = c(5, 4, 4, 6))
barp2(df, pch=t(c(0:4, 7:14)), names.arg=rownames(df), legend.lab=colnames(df),
ylab="y label", main="main")
我正在使用参考图表来填充绘图的条形。
我希望 df 的行名是 x 轴标签,而 df 的列名是图例。
但是,我不断收到此错误:
Error in axis(1, at = x, labels = names.arg, cex.axis = cex.axis) :
'at' and 'labels' lengths differ, 13 != 10
我知道这是因为rownames(df)
长度为 10 和colnames(df)
长度为 13(显然不相等),但我不确定如何解决此问题,以便数据框中的数据显示在条形图中。
或者,如果我使用 交换列和行t(df)
,如下所示:
barp2(t(df), pch=t(c(0:4, 7:11)), names.arg=rownames(df), legend.lab=colnames(df),
ylab="y label", main="main")
我收到此错误:
Error in seq.default(x1[frect] + xinc[frect]/2, x2[frect] - xinc[frect]/2, :
wrong sign in 'by' argument
我不知道这个错误是什么意思或为什么我得到它。
抱歉,我无法提供它应该是什么样子的图像,但希望你能了解它的基本概念。
任何帮助将非常感激。