Аннотации не отображаются правильно в плотно карте тепла в R блестящий - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу построить информационный фрейм с тепловой картой в блестящем R, с аннотированными значениями z.В Python я могу сделать это красиво, но в RI нет, я искал везде, так и не понял, как этого добиться.

Я создал фрейм данных, как показано ниже:

index_y <- sort(unique(df2[,"Rank"]))
index_x <- sort(unique(df2[,"Gender"]))

plot_summary <- data.frame(matrix(ncol = length(index_x)+1, nrow = length(index_y)))
colnames(plot_summary) <- c(as.character(index_x),"Index_y")
plot_summary$Index_y=index_y


for (i in 1:length(index_y)){
  for (j in 1:length(index_x)){

    plot_summary[i,j]=nrow(
      df2[(df2[,"Rank"] %in% index_y[i])&(df2[,"Gender"] %in% index_x[j]),]
    )
  }
}


    > plot_summary
       F      M       Index_x
    1  11258  18753       0
    2  44720  79765       1
    3  35411  43334       2
    4  74847 140577       3
    5  28425  41789       4
    6  34584  50822       5
    7 514662 654434       6

И я хочу построить его на блестящей приборной панели R с аннотациями значений z.

  output$plot21 = renderPlotly(
  plot_ly(data=plot_summary,
          x=index_x,
          y=index_y,
          z=as.matrix(plot_summary[1:length(index_x)]),
          type = "heatmap",colors="YlGnBu") %>%
    add_annotations(x=index_x
                    ,y=index_y
                    ,text=as.matrix(plot_summary[1:length(index_x)])
                    ,showarrow=FALSE
                    ,align="center")%>%
    layout(title="heatmap"
           ,yaxis=list(title=input$attrib22)
           ,xaxis=list(title=input$attrib21)
    )
)

Но аннотации отображаются неправильно.Значения z правильные, когда вы наводите курсор мыши на ячейку.Но аннотированный текст переходит от одного к другому столбцу взад-вперед как-то ...

heatmap

Я думаю, что проблема заключается в

add_annotation(text=...)

Но я не знаю, как их исправить.Пожалуйста, помогите ...


Кроме того, кто-нибудь знает, как заставить текст аннотации автоматически менять цвет в зависимости от цвета фона, как показано ниже?

annocolor

Любая помощь приветствуется!:)

...