Цвета, случайным образом назначенные на графике реки Санки R
Я нашел R riverplot
пакет очень удобен для составления графиков Sankey/Minard. Выходная диаграмма отличная, включая положение узлов и ширину ребер.
Но у меня проблема с цветами. Я назначил цвета через столбец "col" в узлах, но выходные цвета не совпадают с тем, что я указал. Я попытался экспериментально удалить все цвета, назначить один цвет за раз, затем добавить секунду и т. Д., Но я не смог найти никакой логики в ошибочных назначениях. Это кажется совершенно случайным, даже добавляя цвета, которые я не являюсь частью указанного списка.
Для простоты обработки я загрузил узлы и ребра в виде двух отдельных файлов.
Ниже приведен мой воспроизводимый пример:
#######################
R CODE:
#######################
library(riverplot)
ruk_sankey_edges <- read.table("/.../ruk_sankey_edges.csv", header = TRUE, na.strings = "''", sep = ";", dec=".")
ruk_sankey_nodes <- read.table("/.../ruk_sankey_nodes.csv", header = TRUE, na.strings = "''", sep = ";", dec=".")
nodes <- ruk_sankey_nodes
edges <- ruk_sankey_edges
colnames( nodes ) <- c( "ID", "x", "y", "col")
colnames( edges ) <- c( "ID", "N1", "N2", "Value")
river <- makeRiver( nodes, edges, node_labels = NULL, node_xpos = nodes$x, node_ypos = nodes$y)
style <- list(col = nodes$col )
riverplot(river, lty = 0, default_style = style, srt = 0,
node_margin = 0.1, nodewidth = 1, plot_area = 0.8, nsteps = 50,
add_mid_points = NULL, yscale = "auto")
#######################
AND THE DATA FILES:
#######################
ruk_sankey_nodes.csv :
ID;X;Y;col
A1;5;70;gray
A2;10;90;red
A3;10;65;gray
A4;20;85;gray
A5;30;105;green
A6;30;95;cyan
A7;30;85;mangenta
A8;30;75;yellow
A9;20;45;gray
A10;30;60;blue
A11;30;40;black
#######################
ruk_sankey_edges.csv :
ID;ID1;ID2;Value
E1;A1;A3;39159
E2;A1;A2;8200
E3;A4;A8;2942
E4;A4;A7;1608
E5;A4;A6;3039
E6;A4;A5;3897
E7;A3;A9;27673
E8;A3;A4;11486
E9;A9;A11;22235
E10;A9;A10;5438
#######################
У кого-нибудь есть предложение? Или может получить указанные цвета?
Большое спасибо,
Патрик
2 ответа
В вашем фрейме данных узлов (как в файле node.df ниже), преобразуйте col
переменная, которая, вероятно, является фактором, к характеру. riverplot
() запутывается!
node.df$col <- as.character (node.df$col)
Альтернативно использовать
stringsAsFactors= FALSE
в вашем фрейме данных "узлов". Это предлагается в Справочном руководстве: см. Примеры на странице 7 для стилей 'makeriver()'.