只有值 "zero" 的标签未以其在 Plot() 中的刻度为中心
Only label for value "zero" is not centered to its tick in Plot()
我在 R 中使用普通的 plot()
,并使用漂亮的函数做标签和刻度以获得更大的灵活性(标记...)。
但碰巧值 "zero" 的标签没有正确对齐(居中)在相应的刻度周围,而其他所有标签看起来都正常。 (查看下面链接的屏幕截图。)
- 只有当我在格式中使用 "scientific=FALSE" 时才会发生 (...)
- 看起来正确,如果我使用 "scientific=TRUE"
似乎零向右对齐,而不是居中,并且 R 认为 "zero" 与其他大数字(例如“100 000”)具有相同数量的数字并将“000 000”居中对齐,而不是仅居中对齐“0”。
有什么容易的事吗?
最小工作示例:
plot(x=NULL, y=NULL, xlab="xlab", ylab="ylab"
, xlim=range(2007:2014), ylim=range(0:500000), axes=FALSE)
box()
ticks_x <- pretty(2007:2014,n=6)
ticks_y <- pretty(0:500000,n=8)
labels_x <- format(ticks_x)
labels_y <- format(ticks_y , big.mark = " " , decimal.mark=",", scientific=FALSE)
axis(1, at = ticks_x, labels = labels_x)
axis(2, at = ticks_y, labels = labels_y)
截图:
如果不使用科学模式,有什么关于如何 "centre" "zero" 的建议吗?
用 "inserting as text" 或类似的手动解决方案是不可能的,因为绘图是在循环内创建的,只有有时会出现零,但它总是错误对齐。
非常感谢!
只需使用axis(2, at = ticks_y-50000, labels = labels_y)
。如果你喜欢自动化,你可以使用par("usr")根据范围移动。
轴标签是字符串。查看您当前的 labels_y
:
#[1] " 0" " 50 000" "100 000" "150 000" "200 000" "250 000" "300 000"
#[8] "350 000" "400 000" "450 000" "500 000"
你得到了不需要的对齐方式,仅仅是因为 0 的标签是 " 0"
。该问题可以通过以下方式解决:
labels_y[1] <- " 0 "
## or simply: labels_y[1] <- "0"
axis(2, at = ticks_y, labels = labels_y)
最终解决方案:
介绍...
[...]
labels_y <- format(....
if(as.numeric(ticks_y[1]) == "0"){labels_y[1] <- "0"}
axis(2,....
[...]
... 在 "labels_y <- ..." 和 "axis(..." 之间就可以了!
我在 R 中使用普通的 plot()
,并使用漂亮的函数做标签和刻度以获得更大的灵活性(标记...)。
但碰巧值 "zero" 的标签没有正确对齐(居中)在相应的刻度周围,而其他所有标签看起来都正常。 (查看下面链接的屏幕截图。)
- 只有当我在格式中使用 "scientific=FALSE" 时才会发生 (...)
- 看起来正确,如果我使用 "scientific=TRUE"
似乎零向右对齐,而不是居中,并且 R 认为 "zero" 与其他大数字(例如“100 000”)具有相同数量的数字并将“000 000”居中对齐,而不是仅居中对齐“0”。
有什么容易的事吗?
最小工作示例:
plot(x=NULL, y=NULL, xlab="xlab", ylab="ylab"
, xlim=range(2007:2014), ylim=range(0:500000), axes=FALSE)
box()
ticks_x <- pretty(2007:2014,n=6)
ticks_y <- pretty(0:500000,n=8)
labels_x <- format(ticks_x)
labels_y <- format(ticks_y , big.mark = " " , decimal.mark=",", scientific=FALSE)
axis(1, at = ticks_x, labels = labels_x)
axis(2, at = ticks_y, labels = labels_y)
截图:
如果不使用科学模式,有什么关于如何 "centre" "zero" 的建议吗?
用 "inserting as text" 或类似的手动解决方案是不可能的,因为绘图是在循环内创建的,只有有时会出现零,但它总是错误对齐。
非常感谢!
只需使用axis(2, at = ticks_y-50000, labels = labels_y)
。如果你喜欢自动化,你可以使用par("usr")根据范围移动。
轴标签是字符串。查看您当前的 labels_y
:
#[1] " 0" " 50 000" "100 000" "150 000" "200 000" "250 000" "300 000"
#[8] "350 000" "400 000" "450 000" "500 000"
你得到了不需要的对齐方式,仅仅是因为 0 的标签是 " 0"
。该问题可以通过以下方式解决:
labels_y[1] <- " 0 "
## or simply: labels_y[1] <- "0"
axis(2, at = ticks_y, labels = labels_y)
最终解决方案:
介绍...
[...]
labels_y <- format(....
if(as.numeric(ticks_y[1]) == "0"){labels_y[1] <- "0"}
axis(2,....
[...]
... 在 "labels_y <- ..." 和 "axis(..." 之间就可以了!