我如何强制'scatter.smooth'用字符串而不是数字标记x轴,按照我的意思排序?

时间:2015-07-07 16:24:27

标签: r scatter-plot

我正在试验R的{​​{1}}并编写了以下的scriptlet:

scatter.plot

这会产生以下情节: enter image description here

对我来说有两个问题:x轴标有数字而不是d <- data.frame( weekday = rep(c('So', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'), 5), value = nchar(c( '##' , # So '########' , # Mo '#############' , # Tu '######' , # We '############' , # Th '###############' , # Fr '###' , # Sa # --- '####' , # So '####' , # Mo '########' , # Tu '#####' , # We '###########' , # Th '#########' , # Fr '#####' , # Sa # --- '####' , # So '######' , # Mo '############' , # Tu '####' , # We '#############' , # Th '##########' , # Fr '###' , # Sa # --- '#' , # So '####' , # Mo '##############' , # Tu '####' , # We '############' , # Th '##############' , # Fr '#######' , # Sa # --- '###' , # So '######' , # Mo '###########' , # Tu '######' , # We '#############' , # Th '###########' , # Fr '####' # Sa )) ) scatter.smooth(d$value ~ d$weekday, col=gray(0.7), bty='n') SoMo,数字似乎按照字母顺序排列它们代表的工作日(因此1为Sa,7为Fr)。

如何让情节按工作日的顺序向我显示工作日标签(WeSo)?

1 个答案:

答案 0 :(得分:3)

首先,您需要重新排序weekday的因子级别(您正确地注意到默认为按字母顺序排列):

d$weekday = factor(d$weekday, levels= c('So', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'))

然后,您将需要使用工作日数据的levels来替换x轴的数字:

scatter.smooth(d$value ~ d$weekday, col=gray(0.7), bty='n', xaxt="n")
axis(1, at=1:7, labels = levels(d$weekday))

首先添加xaxt="n"表示不使用x轴的默认数字方案,然后axis函数会放置自定义标签。

enter image description here