Saya mencoba memplot heatmap menggunakan paket R plotly, di mana saya ingin memiliki warna tertentu untuk label tertentu dari teks centang sumbu y.

Berikut ini contoh kumpulan data:

set.seed(1)
df <- reshape2::melt(matrix(rnorm(100),10,10,dimnames = list(paste0("G",1:10),paste0("S",1:10))))

Dan inilah yang saya coba:

library(plotly)
library(dplyr)
plot_ly(z=c(df$value),x=df$Var2,y=df$Var1,colors=grDevices::colorRamp(c("darkblue","gray","darkred")),type="heatmap",colorbar=list(title="Scaled Value",len=0.4)) %>%
  layout(yaxis=list(title=list(color=c(rep("darkred",5),rep("darkblue",5)))))

Ini tidak berfungsi karena saya mendapatkan: masukkan deskripsi gambar di sini

Kepada: yaxis=list(title=list(color=list(c(rep("darkred",5),rep("darkblue",5)))))

Atau: yaxis=list(title=list(tickcolor=c(rep("darkred",5),rep("darkblue",5))))

Atau: yaxis=list(title=list(tickcolor=list(c(rep("darkred",5),rep("darkblue",5)))))

Sepertinya tidak membantu.

Ada ide?

2
dan 14 Agustus 2019, 02:44

1 menjawab

Jawaban Terbaik

Pertanyaan serupa dengan pengaturan berbeda telah ditanyakan dan dijawab untuk Python di sini: Menyetel warna font yang berbeda untuk kutu sumbu x tertentu. Di bawah ini adalah upaya terbaik saya dengan pengaturan Anda untuk R.

Alur:

enter image description here

Kode:

library(plotly)
library(dplyr)

# data
set.seed(1)
df <- reshape2::melt(matrix(rnorm(100),10,10,dimnames = list(paste0("G",1:10),paste0("S",1:10))))

# plotly setup
p1 <- plot_ly(z=c(df$value),x=df$Var2,y=df$Var1,colors=grDevices::colorRamp(c("darkblue","gray","darkred")),
              type="heatmap",colorbar=list(title="Scaled Value",len=0.4)) 

p2 <- p1 %>% add_trace(xaxis='x2', showscale=FALSE)

p3 <- p2  %>% layout(xaxis=list(range=list(0,9),
                                tickvals=list(0,1,2,3,4),
                                tickfont=list(color='red')),
                     xaxis2=list(range=list(0,9), overlaying='x',
                                 ticktext = list('s9', 's10'),
                                 tickvals=list(5, 6, 7, 8, 9),
                                 tickfont=list(color='blue')))
# plot it
p3
5
vestland 31 Oktober 2019, 12:59