根据数据集变量在R中着色条形图

根据数据集变量在R中着色条形图,r,colors,bar-chart,R,Colors,Bar Chart,我试着根据年份给R中的条形图的条形图上色。 我没有成功使用read.table,这就是我尝试采用此方法的原因: 我试图创建一个像这样的迷你数据框。这是完美的 j=data.frame(plot=c(“N10-11”、“N10-14”、“N13-11”、“N13-14”)、胸径=c(“60.6”、“68.5”、“55.6”、“61.5”)、年份=c(“2011”、“2014”、“2011”、“2014”) 试图修改此代码 barplot(x$cov, names.arg = x$exon,

我试着根据年份给R中的条形图的条形图上色。 我没有成功使用read.table,这就是我尝试采用此方法的原因:

我试图创建一个像这样的迷你数据框。这是完美的

j=data.frame(plot=c(“N10-11”、“N10-14”、“N13-11”、“N13-14”)、胸径=c(“60.6”、“68.5”、“55.6”、“61.5”)、年份=c(“2011”、“2014”、“2011”、“2014”)

试图修改此代码

barplot(x$cov, names.arg = x$exon, 
    ylab = "read depth" , 
    col = gray.colors(length(unique(x$exon)))[as.factor(x$exon)])
到我的数据集(即使是最简单的方法…)的结果是

条形图中出现错误。默认值(j$dbh):“高度”必须是矢量或矩阵

我不会错过一件很基本的事情。 你能帮我解决我的问题吗? 此外,我想使用自定义颜色,而不是让R自动选择它们-我如何才能做到这一点

问候 Nico

#数据格式正确,高度变量需要为数字
j=数据帧(图=c(“N10-11”、“N10-14”、“N13-11”、“N13-14”),
胸径=数值(c(“60.6”、“68.5”、“55.6”、“61.5”)),
年份=c(“2011”、“2014”、“2011”、“2014”))
#检查这个
>str(j)
“data.frame”:4个obs。共有3个变量:
$plot:系数w/4级“N10-11”、“N10-14”、..:1 2 3 4
$dbh:num 60.668.555.661.5
$年:系数w/2级“2011年”、“2014年”:1 2

mycols需要一个高度的数值,在数据中,dbh是一个因子。但是如果你给出的数据与你的例子相符,那就更容易发现了……你是说条形图函数?我知道这正是我试图调整的函数-但正如您在错误消息中看到的,它甚至无法输入barplot(j$dbh)-我不理解与在其他主题中发布的数据集的区别…如果您使用
barplot(as.numeric(j$dbh))
,它能工作吗?我的意思是你给了我们你的数据
j
,但是在
x
上运行的代码还有其他变量。这意味着我们必须修改代码/数据来重现您的错误。你也可以发布你自己的改编吗?很抱歉<代码>条形图(j$dbh,names.arg=j$plot,ylab=“dbh”,col=gray.colors(长度(唯一(j$year)))[as.factor(j$year)])
添加
as.numeric
即可<代码>条形图(as.numeric(j$dbh),names.arg=j$plot,ylab=“dbh”,col=gray.colors(长度(唯一(j$year))[as.factor(j$year)])非常感谢!有没有一种简单的方法可以代替自动使用两种颜色?你说的“简单的方法如何使用两种颜色”是什么意思?你可以将
mycols
向量更改为你想要的颜色。谢谢你Heroka!这个脚本使用的限制条件是,绘图的条形图指示2、4、1和3,而不是数据集中写入的值。。。你能重现这个错误吗?我无法重现。您是否也通过任何更改将绘图转换为数字?我已经将我的输出添加到了答案中。好吧,我错过了将高度变量转换为数字的机会!很抱歉,谢谢你的帮助!!!对不起,这个问题不好!不用担心,这就是我们来这里的目的:)每个人都曾经是初学者。
#data in right format, height-variable needs to be numeric

j=data.frame(plot=c("N10-11","N10-14","N13-11","N13-14"),
             dbh=as.numeric(c("60.6","68.5","55.6","61.5")),
             year=c("2011","2014","2011","2014"))
#check this
> str(j)
'data.frame':   4 obs. of  3 variables:
 $ plot: Factor w/ 4 levels "N10-11","N10-14",..: 1 2 3 4
 $ dbh : num  60.6 68.5 55.6 61.5
 $ year: Factor w/ 2 levels "2011","2014": 1 2 1 2

mycols <- c("red","blue")

barplot(j$dbh, names.arg = j$plot, ylab = "dbh" , 
    col = mycols[j$year], ylim=c(0,70))