簡體   English   中英

ggplot繪圖軸刻度線和標簽分別

[英]ggplot plot axis ticks and labels separately

我正在尋找一種在ggplot上的不同位置創建刻度和標簽的方法。

樣例代碼

#load libraries
library(ggplot2)
library(reshape2)

#create data
df <-data.frame(A=1:6,B=c(0.6,0.5,0.4,0.2,0.3,0.8),C=c(0.4,0.5,0.6,0.8,0.7,0.2),D=c("cat1","cat1","cat1","cat2","cat2","cat2"))
df 
df1 <- melt(df,measure.vars=c("B","C"))

#plot
p <- ggplot()+
  geom_bar(data=df1,aes(x=A,y=value,fill=variable),stat="identity")+
  theme(axis.title=element_blank(),legend.position="none")
print(p)

在此處輸入圖片說明

在此圖中,默認值的刻度和標簽位於相同的位置(由中斷定義)。 由於主題,x軸線完全丟失。

相反,我想在這些位置打勾

tpoint <- c(1,3,4,6)

並在這些位置貼上標簽

lpoint <- data.frame(pos=c(2,5),lab=c("cat1","cat2"))

最終得到如下圖所示的帶有部分x軸線或完整x軸線的圖形:

在此處輸入圖片說明

這將我的標簽放到位

p1 <- p + scale_x_discrete(breaks=lpoint$pos,labels=lpoint$lab)

但是刻度線放置在錯誤的位置,不可能使用多個刻度嗎?

我可以接近您想要的輸出的結果是:

dfannotate <- data.frame(x = c(2, 5), xmin = c(1, 4), xmax = c(3, 6), y = -.01, height=.02)
dfbreaks = data.frame(lim = 1:6, lab = c('', 'cat1', '', '', 'cat2', ''))

p + geom_errorbarh(data = dfannotate, aes(x, y, xmin=xmin, xmax=xmax, height=height)) +
  scale_x_discrete(limits=dfbreaks$lim, labels=dfbreaks$lab) +
  scale_y_continuous(expand = c(0, 0), limits=c(-0.02, 1.02)) +
  theme(axis.ticks.x = element_line(linetype=0))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM