我正在试验R
的{{1}}并编写了以下的scriptlet:
scatter.plot
这会产生以下情节:
对我来说有两个问题: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')
,So
到Mo
,数字似乎按照字母顺序排列它们代表的工作日(因此1为Sa
,7为Fr
)。
如何让情节按工作日的顺序向我显示工作日标签(We
到So
)?
答案 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
函数会放置自定义标签。