【问题标题】:How to do a scatter plot with factor class on Xlim?如何在 Xlim 上使用因子类绘制散点图?
【发布时间】:2021-10-15 21:19:56
【问题描述】:

当我尝试用抖动做散点图时,我发现它要求Xlim 是数字

plot(jitter(d$'WHO region'), d$Numeric)
> Error in jitter(d$"WHO region") : 'x' must be numeric

所以当我尝试将列更改为数字时,散点图上的输出抖动变得不可读

as.numeric(as.character(d$'WHO region'))

请注意,WHO 区域列是因子,因为我发现字符类不适用于散点图。

下面是我用来输入数据的代码

d <- read_csv("WHOSIS_000008.csv", col_types = cols(`WHO region` = col_factor(levels = c("Africa","Americas", "Eastern Mediterranean","Europe", "South-East Asia", "Western Pacific"))))

我应该得到的结果。

【问题讨论】:

  • 请用dput展示一个可重复的小例子,即dput(head(d, 40))
  • 这里发帖时间太长了,所以我这样做了,> dput(head(d$WHO region, 10)) structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), .Label = c("非洲", "美洲", "东地中海", "欧洲", "东南亚", "西太平洋"), class= "因素")
  • 你需要plot(dvec, jitter(as.numeric(dvec)), col = "blue") where dvec &lt;- $"WHO region"
  • 它也会产生类似于我得到的东西,来自 WHO.region 列的数据将转换为 1,2,3,4,5,6
  • 代码 plot(dvec, jitter(as.numeric(dvec)), col = "blue") 为 x 轴提供因子值和。不是存储整数值。 jitter 函数需要数字输入,即您可以查看文档 ?jitter

标签: r class scatter-plot jitter


【解决方案1】:

使用iris 数据集和stripchart 这非常接近:

data(iris)
stripchart(Sepal.Length~Species, iris, method="jitter", vertical=TRUE, pch=16, col="blue")
mns <- with(iris, tapply(Sepal.Length, Species, mean))
segments((1:3)-.1, mns, (1:3)+.1, mns, lwd=3, col="red")

【讨论】:

  • 非常感谢您的解决方案!在@akrun 谈到数字仅适用于数字之后,我开始考虑使用其他方法的可能性。太糟糕了,我不能赞成你的评论。确实是一个伟大而干净的解决方案!
猜你喜欢
  • 2015-05-21
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
相关资源
最近更新 更多