【问题标题】:How to make a base R scatter Plot from a data subset如何从数据子集中制作基本 R 散点图
【发布时间】:2022-01-07 00:26:04
【问题描述】:

我正在使用 R Base 绘图。我需要对两列进行子集化,其中一列是性别=女性,另一列是 Measure.Variables=预期寿命。由于 Measure.Variables 列有两个值“预期寿命”和“死亡率”。

此外,我正在尝试手动设置 y 和 x 轴的中断和限制,但我无法这样做。我附上了一张我想添加的休息和限制的图片。

你能帮我解决这个问题吗?我想将 y 轴的中断设置为 break=c(30,40,50,60,70,80),将 x 轴的中断设置为 break=c(1900,1920,1940,1960,1980,2000)。无论数据是否可用,我都希望显示这些限制。

我正在使用以下代码,当我在子集语句中添加第二个条件时,它给了我一个错误。否则,它可以在没有 Measure.Variables==Life Expectancy 命令的情况下正常工作。

下面是数据的输出

structure(list(Measure.Variables = c("Life Expectancy", "Life Expectancy", 
"Life Expectancy", "Mortality", "Life Expectancy", "Life Expectancy"
), Race = c("All Races", "All Races", "All Races", "All Races", 
"All Races", "All Races"), Sex = c("Both Sexes", "Both Sexes", 
"Both Sexes", "Both Sexes", "Both Sexes", "Both Sexes"), Year = 1900:1905, 
    Average.Life.Expectancy = c(47.3, 49.1, 51.5, 50.5, 47.6, 
    48.7), Mortality = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_)), row.names = c(NA, 6L), class = "data.frame")

我正在使用以下代码

with(subset(LF, Sex == "Male", Measure.Variables == "Life Expectancy"), 
     plot(Year, Average.Life.Expectancy, col="red", pch=17,
          main="Male Life Expectancy", ylab="Life Expectancy"))

为响应阿黛尔而编辑,y 值仍未显示。请看这张图Graph after Adele's suggestion

【问题讨论】:

  • 我建议你考虑一个风格指南,例如jef.works/R-style-guide
  • @jay.sf 谢谢!!您还可以帮助手动设置 R 基础绘图中的中断吗?我在 x 轴上有几年,在 y 轴上有预期寿命,以下是我试图为 y xis =c(30,40,50,60,70,80) 为 x xis =c( 1900,1920,1940,1960,1980,2000)

标签: r plot graph


【解决方案1】:

在您的代码中添加一些参数然后使用axis() 会很好:

with(subset(LF, Sex == "Male", Measure.Variables == "Life Expectancy"), 
     plot(LF$Year, LF$Average.Life.Expectancy, col="red", pch=17,
          main="Male Life Expectancy", ylab="Life Expectancy"
          ,xlim = c(1900, 2000), ylim = c(30, 80)
          , xaxt='n', yaxt='n'
          )
     )

axis(1, at = seq(1900, 2000, by=20), las = 2)
axis(2, at = seq(30, 80, by=10))

【讨论】:

  • 它仍然只显示 y 轴的 3 个值,即 1900,1940,1980。虽然中断工作正常,但 1920、1960、2000 的标签并未出现。
  • 我已经添加了一张图片来演示,如果它不清晰
  • 请在我编辑代码时将las = 2 添加到第一个axis
【解决方案2】:

更容易设置data= 参数,并在subset 中使用& 单独选择。对于轴自定义,使用 xaxt='n'yaxt='n' 停用轴文本,并使用 axis() 构建您自己的。

plot(Year ~ Average.Life.Expectancy,
     data=subset(dat, Sex == "Both Sexes" & Measure.Variables == "Life Expectancy"),
     col="red", pch=17, 
     main="Male Life Expectancy", ylab="Life Expectancy", xaxt='n', yaxt='n')
axis(1, at=c(48,50,52))
axis(2, at=c(1900, 1902, 1904))

请注意,我在这里使用了"Both Sexes",因为"Male" 未包含在您的示例数据中。

另外,我使用 40、50、52 和 1900、1902、1904 来演示轴自定义。

在你的情况下,我会尝试

axis(1, at=3:8*10)
axis(2, at=seq(1900, 2000, 20))

【讨论】:

  • 谢谢!!您还可以帮助手动设置 R 基础绘图中的中断吗?我在 x 轴上有几年,在 y 轴上有预期寿命,以下是我试图为 y xis =c(30,40,50,60,70,80) 为 x xis =c( 1900,1920,1940,1960,1980,2000)
  • 查看更新@MadiaKh
  • 它给了我一个错误“plot.window(...) 中的错误:'xlim' 值无效”Graph1
  • @MadiaKh 您似乎以某种方式错误地指定了xlim=xlim=c(x1, x2) 必须是具有 两个 元素的向量,例如尝试xlim=c(1900, 2000).
  • 它不适合我。有没有其他方法可以手动设置轴值?另外,在您的情况下,为什么轴上的最后一个值没有出现,例如“52”?
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多