我有这个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'
)
产生这个情节:
我的快速问题是:我怎样才能实现x轴标有序列? (2011年,2012年,2013年,2014年,2015年)
我的数据如下:
> 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
答案 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))
使用这个,我提供的代码有效(除了我遗漏了一些逗号。
然而,当我把它更改为:
deaths.data <- data.frame(Geschlecht = rep("Mann", 5), Jahr = as.character(2011:2015), value = c(301, 285, 312, 305, 323))
它提供了与您在问题中显示的内容类似的输出。
我假设您在数据集中拥有的年份存储为字符而不是数字。 使用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'
)
制作该图:
答案 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)