Тепловая карта объединяет общие строки для консолидированного графика в R
Я использую ggvis для создания тепловой карты (plot1), используя следующие данные образца.
Class Super_class cell1 cell2 cell3
A1 A 2 3.96 0.6
A2 A 1 2.92 0
A3 A 5 0.56 6.4
A4 A 1 10.92 22.36
A5 A 0 0 5.32
B B 0 0 1
C1 C 0.64 2.4 3.4
C2 C 0 3.6 2.56
C3 C 0.6 2 2
C4 C 1.96 1 9.96
C5 C 4.6 17.56 10
Но поскольку класс можно отнести к суперклассам как A, B, C - я хотел бы создать объединенный график, содержащий ту же информацию, что и plot1, но с наложенными цветами, чтобы придать большую плотность (plot2).
В сюжете, который я попробовал, похоже, что они не совпадают; поскольку высокая интенсивность, видимая в A4, ячейка 3 (plot1) не отражена в plot2 (для A,cell3)
Любые предложения будут очень полезны
вот код, который я использую
dfm = melt(df)
sample <- dfm %>%
ggvis(~factor(variable), ~factor(Class), fill=~value) %>%
layer_rects(width = band(), height = band(), strokeWidth := 0) %>%
scale_nominal("x", padding = 0) %>%
scale_nominal("y", padding = 0) %>%
scale_numeric("fill", range=c("white", "red")) %>%
add_legend("fill", title = "Score") %>%
add_axis("x", orient='top',title = "Sample",properties=axis_props(labels = list(angle=70, fontSize=12))) %>%
add_axis("y",orient='right', title = "Class")
1 ответ
Решение
Мне неясно, чего вы пытаетесь достичь, но из того, что я понимаю:
library(ggvis)
library(tidyr)
library(dplyr)
df %>%
gather(variable, value, -Class, -Super_class) %>%
group_by(Super_class, variable) %>%
summarise(value = sum(value)) %>%
mutate_each(funs(factor), -value) %>%
ggvis(~variable, ~Super_class, fill=~value) %>%
layer_rects(width = band(), height = band(), strokeWidth := 0) %>%
layer_text(
x = prop("x", ~variable, scale = "xcenter"),
y = prop("y", ~Super_class, scale = "ycenter"),
text:=~value, fontSize := 14, fill:="black",
baseline:="middle", align:="center") %>%
scale_nominal("x", padding = 0) %>%
scale_nominal("y", padding = 0) %>%
scale_nominal("x", name = "xcenter", padding = 1, points = TRUE) %>%
scale_nominal("y", name = "ycenter", padding = 1, points = TRUE) %>%
scale_numeric("fill", range=c("white", "red")) %>%
add_legend("fill", title = "Score") %>%
add_axis("x", orient = 'top', title = "Sample") %>%
add_axis("y", orient = 'right', title = "Class")
Который дает: