【问题标题】:Plot a character vector against a numeric vector in R针对 R 中的数值向量绘制字符向量
【发布时间】:2012-10-22 10:12:20
【问题描述】:

我在 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()。我不断收到不同类型的错误,主要是因为 data.frame 中字符列的性质。

我知道这对大多数人来说应该很容易,但我仍然是 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")

【问题讨论】:

  • 你能举例说明你尝试了什么以及错误信息是什么吗?

标签: r vector plot character dataframe


【解决方案1】:

默认的 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")

【讨论】:

  • 谢谢安德烈。这确实对图表有很大帮助。快到了。现在我会缺少的是在 x 轴上将 Sent.Type 列中每个单元格的实际名称作为标签。
  • @Hernan_L 我已经用你的数据添加了一个完整的例子
  • @安德烈。谢谢,这几乎是我想要的。我现在只是在挣扎,因为我希望 x 轴的每个值都有更小的符号。 (线条看起来不太好)。我想得到小点,甚至直方图条都很好。问题是我不能使用 hist 函数,因为 x 参数不是数字,并且我正在尝试通过添加参数来尝试绘图: type="p",pch="o" 但它们不会改变任何东西。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2011-06-15
  • 2012-06-13
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多