在R中绘制一个字符向量和一个数值向量的图表

7
我可以帮您翻译成中文。以下是需要翻译的内容:

我在R中有以下数据框:

>AcceptData
  Mean.Rank Sentence.Type
1       2.5       An+Sp+a
2       2.6      An+Nsp+a
3       2.1       An+Sp-a
4       3.1      An+Nsp-a
5       2.4       In+Sp+a
6       1.7      In+Nsp+a
7       3.1       In+Sp-a
8       3.0      In+Nsp-a

我希望绘制一个图表,将“Sentence.Type”列作为x轴,每个单元格的实际名称作为x轴上的点。我希望y轴以0.5步长从1到4。
到目前为止,我无法使用plot()或hist()绘制此图。主要是由于数据框中字符列的特性而引起的各种错误。
我知道大多数人可能认为这很简单,但我对R还是有点新手,在经过数小时后,我仍然无法正确绘制图表。非常感谢任何帮助。
编辑:
我遇到了一些错误:
> hist(AcceptData$Sentence.Type,AcceptData$Mean.Rank)
Error in hist.default(AcceptData$Sentence.Type, AcceptData$Mean.Rank) : 
  'x' must be numeric

或者:(这不会产生错误,但绝对不是我想要的图形。它将所有的x值挤在x轴左侧)
  plot(AcceptData$Sentence.Type,AcceptData$Mean.Rank,lty=5,lwd=2,xlim=c(1,16),ylim=c(1,4),xla b="Sentence Type",ylab="Mean Ranking",main="Mean Acceptability Ranking per Sentence")

1
你能举个例子说明你尝试了什么以及出现了什么错误信息吗? - January
1个回答

15

默认的plot函数有一种方法可以让您在x轴上绘制因子,但要使用此功能,您必须将文本数据转换为factor

以下是一个示例:

x <- letters[1:5]
y <- runif(5, 0, 5)

plot(factor(x), y)

在此输入图像描述

使用您的示例数据:

AcceptData <- read.table(text="
Mean.Rank Sentence.Type
1       2.5       An+Sp+a
2       2.6      An+Nsp+a
3       2.1       An+Sp-a
4       3.1      An+Nsp-a
5       2.4       In+Sp+a
6       1.7      In+Nsp+a
7       3.1       In+Sp-a
8       3.0      In+Nsp-a", stringsAsFactors=FALSE)

plot(Mean.Rank~factor(Sentence.Type), AcceptData, las=2, 
     xlab="", main="Mean Acceptability Ranking per Sentence")

在此输入图片描述


谢谢Andrie。这确实对图表有很大帮助。已经接近目标了。现在我还需要的是在x轴上使用Sent.Type列中每个单元格的实际名称作为标签。 - HernanLG
@Hernan_L 我已经添加了一个完整的例子,使用了你的数据。 - Andrie
1
@Andrie。谢谢,这基本上就是我想要的。现在我只是在努力,因为我想让每个x轴值的符号更小一些(线看起来不太好)。我想要得到小点或者直方图条形图也不错。问题是我不能使用hist函数,因为x参数不是数字,而且用plot时我尝试添加参数:type="p",pch="o",但它们没有改变任何东西。 再次感谢您的帮助。 - HernanLG
"type="p", pch=19, col="red"等不再起作用了。为什么?" - Tony Xu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接