Я могу только размышлять о проблеме, но на представленном изображении вы можете видеть, что Plotly использовал только два значения из 4-х z-значений. Ваша шкала цветов справа изменяется от 1 до 2, а не от 1 до 4. Это происходит, скорее всего, потому что вы указали только два значения x и y.
Использовать фрейм данных
df <- expand.grid(x, y)
df <- transform(df, text = paste(Var1, Var2, sep='_'))
print(df)
Var1 Var2 text
1 Blue One Blue_One
2 Red One Red_One
3 Blue Two Blue_Two
4 Red Two Red_Two
Теперь вы можете легко использовать add_annotations
add_annotations(x = df$Var1,
y = df$Var2,
text = df$text)
Чтобы получить следующий участок
Полный код
library(plotly)
x <- c("Blue", "Red")
y <- c("One", "Two")
df <- expand.grid(x, y)
df <- transform(df, text = paste(Var1, Var2, sep='_'))
p <- plot_ly(x = df$Var1,
y = df$Var2,
z = c(1:4)
) %>%
add_heatmap(opacity = 0.9
) %>%
add_annotations(x = df$Var1,
y = df$Var2,
text = df$text)
p
В качестве альтернативы вы можете зациклить свои значения и добавить аннотацию для каждого из них.
library(plotly)
x <- c("Blue", "Red")
y <- c("One", "Two")
p <- plot_ly(x = x,
y = y,
z = c(1:4)
) %>%
add_heatmap(opacity = 0.9)
for (val_x in x)
{
for (val_y in y)
{
p <- add_annotations(p,
x = val_x,
y = val_y,
text = paste(val_x, val_y, sep = '_'))
}
}
p