我怎样才能强制 'scatter.smooth' 用字符串而不是数字来标记 x 轴,按照我的意思排序?
How can I force 'scatter.smooth' to label the x-axis with strings rather than numbers, ordered the way I mean it?
我正在试验 R
的 scatter.plot
并编写了以下脚本:
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')
这会产生以下情节:
我有两个问题:x 轴标有数字而不是 So
、Mo
到 Sa
并且数字似乎是按照字母顺序排列的它们代表的工作日的值(所以 1 是 Fr
,7 是 We
)。
如何让绘图按工作日的顺序显示工作日标签(So
到 Sa
)?
首先,您需要重新排序 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
函数放置自定义标签。
我正在试验 R
的 scatter.plot
并编写了以下脚本:
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')
这会产生以下情节:
我有两个问题:x 轴标有数字而不是 So
、Mo
到 Sa
并且数字似乎是按照字母顺序排列的它们代表的工作日的值(所以 1 是 Fr
,7 是 We
)。
如何让绘图按工作日的顺序显示工作日标签(So
到 Sa
)?
首先,您需要重新排序 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
函数放置自定义标签。