代码之家  ›  专栏  ›  技术社区  ›  Fino

标记由axis()函数生成的轴

r
  •  1
  • Fino  · 技术社区  · 6 年前

    我正在R基中绘制一个双轴图形,无法向次轴添加标签。以下是我的工作内容:

    dados = structure(list(IDADE = c(65L, 35L, 65L, 42L, 50L, 44L, 0L, 58L, 
                                 22L, 27L, 34L, 31L, 0L, 24L, 34L, 20L, 4L, 34L, 20L, 27L, 8L, 
                                 2L, 20L, 31L, 45L, 26L, 26L, 40L, 50L, 34L), ESTADO = c(1L, 1L, 
                                                                                         1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 
                                                                                         1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 0L), TIPINT = c(3L, 
                                                                                                                                                     1L, 3L, 2L, 3L, 2L, 2L, 3L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 
                                                                                                                                                     3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 1L, 3L, 2L, 3L, 1L), DIARIAS = c(2L, 
                                                                                                                                                                                                                      2L, 4L, 1L, 1L, 1L, 10L, 1L, 2L, 2L, 2L, 3L, 3L, 1L, 2L, 3L, 
                                                                                                                                                                                                                      6L, 10L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 6L, 1L, 1L, 2L)), .Names = c("IDADE", 
                                                                                                                                                                                                                                                                                            "ESTADO", "TIPINT", "DIARIAS"), row.names = c(NA, 30L), class = "data.frame")
    
    #Define boxplot base
    bx = boxplot(dados$IDADE~dados$TIPINT,axes=F, xlab=NA,ylab=NA,col=heat.colors(3,0.6))
    
    #Posiciona eixos
    par(mar = c(5,5,2,5))
    
    #Plota bar
    barplot(table(dados$TIPINT),col=heat.colors(3,0.4),names=c("Tipo 1","Tipo 2","Tipo 3"),
        ylab = "Quantidade de pacientes")
    
    #Plota box
    par(new=T)
    bx2 = bxp(bx,boxwex = 0.50, at = c(0.9, 2,3.1),axes=F, xlab=NA, ylab="l",boxfill=heat.colors(3,0.7))
    axis(side=4)
    

    这得到了下面的图表 graph_example

    我试着给右轴标上标签,但是 axis(side=4,labels="labels") 是为了别的什么 axis(side=4,ylab="label") 不起作用。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Esther    6 年前

    你可以使用这个函数 mtext 若要将标签添加到次轴,请使用 line=2 参数将其移动到与轴的适当距离。

    mtext("label", 4, line=2)
    

    axis label with mtext

    或者你可以用 text 要有更好的控制,如果说,你想重新定位标签。可以从中提取打印尺寸 par("usr") 并进行相应的调整。

    p <- par("usr")
    text(p[2]+0.4, mean(p[3:4]), labels = "label", xpd=NA, srt = -90)
    

    axis label with text