Я хочу построить информационный фрейм с тепловой картой в блестящем 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 правильные, когда вы наводите курсор мыши на ячейку.Но аннотированный текст переходит от одного к другому столбцу взад-вперед как-то ...
Я думаю, что проблема заключается в
add_annotation(text=...)
Но я не знаю, как их исправить.Пожалуйста, помогите ...
Кроме того, кто-нибудь знает, как заставить текст аннотации автоматически менять цвет в зависимости от цвета фона, как показано ниже?
Любая помощь приветствуется!:)