Haskell: Как передать содержание по каналу одного дескриптора в другого в режиме реального времени

Самый простой способ сделать это - просто предоставить метки вместо индексов для элемента Sankey:

nodes = ["PhD", "Career Outside Science",  "Early Career Researcher", "Research Staff",
         "Permanent Research Staff",  "Professor",  "Non-Academic Research"]
edges = [
    (0, 1, 53), (0, 2, 47), (2, 6, 17), (2, 3, 30), (3, 1, 22.5), (3, 4, 3.5), (3, 6, 4.), (4, 5, 0.45)   
]

# Replace the indices with the labels
edges = [(nodes[s], nodes[e], v) for s, e, v in edges]

value_dim = hv.Dimension('Percentage', unit='%')
careers = hv.Sankey(edges, ['From', 'To'], vdims=value_dim)
careers.opts(labels='index', tools=['hover'])

enter image description here

Тем не менее, я думаю, что ваше ожидание того, что определение labels заставит его использовать столбец меток в узлах для извлечения меток наведения края, имеет смысл, и метки могут не быть уникальными, поэтому описанный выше подход в целом неприменим. Я отправлю вопрос в HoloViews.

5
задан drt 22 March 2009 в 21:02
поделиться

2 ответа

hSetBuffering то, что Вы ищете, значение по умолчанию (на Unix, по крайней мере) является буферизацией строки. Используйте его на stdin прежде, чем запустить основной цикл

hSetBuffering hIn NoBuffering

и дополнительно также на выводе обрабатывают, если Вы хотите видеть результаты сразу на выходной стороне. Обратите внимание, однако, что отключение буферизации может вполне решительно уменьшить производительность.

4
ответ дан 14 December 2019 в 13:47
поделиться

Я - в значительной степени новичок Haskell, но я не забываю сталкиваться с примером недавно обработки познакового входа. hSetBuffering возможно, что Вы ищете?

2
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: