2017-04-11 98 views
0

我想知道是否可以將刻度線標籤放在兩個不同的水平線上以避免標籤之間的重疊。 例如這裏:用不同水平的刻度線繪製

a=c[1:10] 
b=c("January","February","March","April","May","June","July","August","September","October") 
barplot(a,space=0,axes=F) 
ticks=a 
axis(side=1, at =ticks, labels=b) 

回答

1

,你可以嘗試以下方法:

a=1:10 
b=c("January","February","March","April","May","June","July","August","September","October") 
barplot(a,space=0,axes=F) 
ticks=a 

# indices of even ticks 
idx <- seq(2, length(ticks), 2) 

# b2 only contains the odd labels. 
b2 <- b 
# Empty space so a small line gets drawn at omitted labels 
b2[idx] <- "" 

# draw odd labels 
axis(side=1, at =ticks, labels=b2, line = 0) 
# same command for even ticks, lwd = 0 suppresses drawing the x-axis twice 
axis(side=1, at =ticks[idx], labels=b[idx], line = 1, lwd = 0) 

這基本上通過在奇數位置先繪製標籤,然後在偶數位置繪製標籤,但由於略低規避重疊line = 1

0

您可以嘗試撥打兩個axis電話,一個用於奇數月份,另一個用於偶數月份,並將它們放在不同的line上。第一個axis調用只是繪製沒有標籤的刻度。

a=1:10 
a_even <- a[a %% 2==0] 
a_odd <- a[a %% 2==1] 
b=c("January","February","March","April","May","June","July","August","September","October") 
barplot(a,space=0,axes=F) 
ticks=a 
axis(side=1, at =ticks, labels=FALSE,line = 1) 
axis(side=1, at =ticks[a_odd], labels=b[a_odd],line = 1,tick = FALSE) 
axis(side=1, at =ticks[a_even], labels=b[a_even],line = 2,tick = FALSE) 

enter image description here