出于教育目的,我试图用R中带有标签的一些数据点绘制单行水平“数字线”。
library(plotrix)
source("spread.labels.R")
plot(0:100,axes=FALSE,type="n",xlab="",ylab="")
axis(1,pos=0)
spread.labels(c(5,5,50,60,70,90),rep(0,6),ony=FALSE,
labels=c("5","5","50","60","70","90"),
offsets=rep(20,6))
Run Code Online (Sandbox Code Playgroud)
这给了我一条数字线,其中的细线指向数据点应该位于数字线上的标签(有点“插入”),但没有点本身。任何人都可以给我其他或替代的R代码来解决这些问题:-仍未绘制的数据点本身未作图;-标签可能未在整个数字线上平均分配;-行进入了标签,而不仅指向标签
非常感谢,
本杰明·泰尔坎普(Benjamin Telkamp)
我通常喜欢创建使用原始基R图形功能图,如points(),segments(),lines(),abline(),rect(),polygon(),text(),和mtext()。您可以轻松创建曲线(如圆)和更复杂的使用形状segments()和lines()跨越颗粒协调矢量自己定义。例如,请参见绘制向量之间的夹角。这提供了对创建的绘图元素的更多控制,但是,与更多的“预打包”解决方案相比,它通常需要更多的工作和仔细的编码,因此这是一个折衷。
对于您的情况,在我看来,您对spread.labels()尝试做的事情感到满意,您只需要进行以下更改:
这是可以做到的:
## define plot data
xlim <- c(0,100);
ylim <- c(0,100);
px <- c(5,5,50,60,70,90);
py <- c(0,0,0,0,0,0);
lx.buf <- 5;
lx <- seq(xlim[1]+lx.buf,xlim[2]-lx.buf,len=length(px));
ly <- 20;
## create basic plot outline
par(xaxs='i',yaxs='i',mar=c(5,1,1,1));
plot(NA,xlim=xlim,ylim=ylim,axes=F,ann=F);
axis(1);
## plot elements
segments(px,py,lx,ly);
points(px,py,pch=16,xpd=NA);
text(lx,ly,px,pos=3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |