我在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
我要绘制的内容,x轴上的Sentence.Type列,每个单元格的实际名称作为x轴上的一个点。我希望y轴以1步为单位从1到4
到目前为止,我还没有能够用plot()而不是hist()绘制这个。我不断得到不同类型的错误,主要是因为data.frame中字符列的性质。
我知道这对大多数人来说应该是容易的,但我仍然是R和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")
答案 0 :(得分:9)
默认的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")