私はまったく同じ問題を抱えていましたが、私はいくつかの小さなハックでそれを理解することができました。この質問は答えを投稿するのに最も関連があるようです。今のところ、Plotlyは明示的に、つまりカテゴリ(離散)ヒートマップ値に正確な色を指定することはできません。これはthis githubの問題に記載されています。純粋なJSソリューションがそこにリンクされており、それをRで再現するのに時間がかかりました(Plotly 4.7.1を使用)。
最初に、すべてのデータを保持する1つのマトリックスの代わりに、1つのカテゴリごとに1つのマトリックスが必要です。それぞれは1とNAで埋められます。各マトリックスは同じサイズでなければなりません。いくつかのデータを作りましょう。
greenSeriesData <- matrix(c(1,1,NA,NA,1,NA,NA,NA,1), nrow = 3)
redSeriesData <- matrix(c(NA,NA,1,1,NA,NA,NA,NA,NA), nrow = 3)
blueSeriesData <- matrix(c(NA,NA,NA,NA,NA,1,1,1,NA), nrow = 3)
各カテゴリについて、特定のカテゴリに別のdata.frame保持色を設定する必要があります。重要なのは、それらのdata.framesには、colnamesが必要ないということです。
greenColor <- data.frame(x = c(0,1), y = c("#63a803", "#63a803"))
colnames(greenColor) <- NULL
redColor <- data.frame(x = c(0,1), y = c("#a80b03", "#a80b03"))
colnames(redColor) <- NULL
blueColor <- data.frame(x = c(0,1), y = c("#035da8", "#035da8"))
colnames(blueColor) <- NULL
そして、あなたは別のトレースとして、各カテゴリを指定してプロットする準備が整いました:
plot_ly(
type = "heatmap"
) %>% add_trace(
z = greenSeriesData,
colorscale = greenColor
) %>% add_trace(
z = redSeriesData,
colorscale = redColor
) %>% add_trace(
z = blueSeriesData,
colorscale = blueColor
)
あなたがさらに良く見えるように伝説を調整したい場合は、あなたがcolorbar
引数を追加する必要があります各トレース:
plot_ly(
type = "heatmap"
) %>% add_trace(
z = greenSeriesData,
colorscale = greenColor,
colorbar = list(
len = 0.3,
y = 1,
yanchor = 'top',
title = 'Green series',
tickvals = ''
)
) %>% add_trace(
z = redSeriesData,
colorscale = redColor,
colorbar = list(
len = 0.3,
y = 1,
yanchor = 'top',
title = 'Red series',
tickvals = ''
)
) %>% add_trace(
z = blueSeriesData,
colorscale = blueColor,
colorbar = list(
len = 0.3,
y = 1,
yanchor = 'top',
title = 'Blue series',
tickvals = ''
)
)
ようこそ。 Rタグの上にカーソルを置いてください - コピー&ペーストを使って問題を再現できるa)minimal&b)再現可能な例を求めます。 1つを入力してください。ありがとう。 – lukeA
ああ、私はそれを見ていない - まだここでかなり新しい。 – Arun