如果使用序列,如何标记x轴?

时间:2017-07-06 07:25:36

标签: r plot

我有这个R剧本:

plot(
  seq(2011, 2015),
  main = 'Anzahl vor dem 20 Lebensjahr verstorbener Personen',
  xlab = 'Jahre',
  ylab = 'Tode',
  ylim = c(100, 400)
)

points(
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'Jahr'], 
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'value'],
  col = 'blue'
)

points(
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'Jahr'], 
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'value'],
  col = 'red'
)

产生这个情节:

Plot

我的快速问题是:我怎样才能实现x轴标有序列? (2011年,2012年,2013年,2014年,2015年)

铊组成; dr

我的数据如下:

> deaths.data
   Geschlecht Demographisches.Merkmal Jahr value
1        Mann         Unter 20 Jahren 2011   301
2        Frau         Unter 20 Jahren 2011   214
3        Mann         Unter 20 Jahren 2012   285
4        Frau         Unter 20 Jahren 2012   203
5        Mann         Unter 20 Jahren 2013   312
6        Frau         Unter 20 Jahren 2013   212
7        Mann         Unter 20 Jahren 2014   305
8        Frau         Unter 20 Jahren 2014   209
9        Mann         Unter 20 Jahren 2015   323
10       Frau         Unter 20 Jahren 2015   225

3 个答案:

答案 0 :(得分:1)

plot(seq(2011, 2015))没有做你似乎期望它做的事情。如果向plot提供矢量,它将在y轴上绘制矢量值,并在x轴上绘制它们的索引。

因此,如果您没有指定ylim = c(100, 400),则该图在x轴上的范围为1到5,并且在y轴上的范围为2011-2015。您最初绘制的点数超出此范围,因此未显示。然后,将点与实际数据放在一起。我怀疑数据框中的年份也有1到5的值,而不是实际年份。这就是如何在x=1 tot x=5上绘制这些点。

要更改此设置,我们只需调整deaths.data$years中的值。

plot(
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'Jahr'] + 2010, 
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'value'],
  col = 'blue',
  main = 'Anzahl vor dem 20 Lebensjahr verstorbener Personen',
  xlab = 'Jahre',
  ylab = 'Tode',
  ylim = c(100, 400),
  type = 'p'
)
points(
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'Jahr'] + 2010, 
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'value'],
  col = 'red'
)

在上面的代码中,我将2010添加到年份值。 应该使这些年份取代2011-2015而不是1-5。我无法验证,因为您没有在帖子中显示您的数据。

OP编辑后:

我尝试重现数据集的一部分:

deaths.data <- data.frame(Geschlecht = rep("Mann", 5), Jahr = 2011:2015, value = c(301, 285, 312, 305, 323))

使用这个,我提供的代码有效(除了我遗漏了一些逗号。

enter image description here

然而,当我把它更改为:

deaths.data <- data.frame(Geschlecht = rep("Mann", 5), Jahr = as.character(2011:2015), value = c(301, 285, 312, 305, 323))

它提供了与您在问题中显示的内容类似的输出。

enter image description here

我假设您在数据集中拥有的年份存储为字符而不是数字。 使用as.numeric进行更改可以解决您的问题。

答案 1 :(得分:1)

可以使用axis功能标记轴,并使用属性plot禁用xaxt="n"函数中的轴标记。

以下是完整的结果:

plot(
  seq(2011, 2015),
  main = 'Anzahl vor dem 20 Lebensjahr verstorbener Personen',
  xlab = 'Jahre',
  ylab = 'Tode',
  ylim = c(100, 400),
  xaxt = 'n'
)

axis(1, at = seq(1, 5), labels = seq(2011, 2015))

points(
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'Jahr'], 
  deaths.data[deaths.data['Geschlecht'] == 'Mann', 'value'],
  col = 'blue'
)

points(
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'Jahr'], 
  deaths.data[deaths.data['Geschlecht'] == 'Frau', 'value'],
  col = 'red'
)

制作该图:

plot

答案 2 :(得分:1)

另外使用ggplot2

indt<-data.table(
  Geschlecht=
    factor(c("Mann","Frau", "Mann", "Frau", "Mann", 
             "Frau", "Mann", "Frau","Mann", "Frau")),
  Jahr=
    c(2011, 2011, 2012, 2012, 2013, 2013, 2014, 2014, 2015, 2015),
  value=
    c(301, 214, 285, 203, 312, 212, 305, 209, 323, 225)
)

然后通过以下方式创建情节:

    library(ggplot2)
    ggplot(indt) + geom_point(size=3.5,aes(x=Jahr, y=value, color=Geschlecht))+ggtitle("Anzahl vor dem 20 Lebensjahr verstorbener Personen")+  labs(x="Jahre",y="Tode") +ylim(100,400)

enter image description here