Проблемы с графиками корреляции в боке

Когда я рисую свои данные через rect() (из боке), я получаю единственную линию горизонтальных блоков в своей визуализации. Данные распечатываются правильно и, насколько мне известно, правильно отформатированы (type() проверил, что все они были списками). Кто-нибудь может это диагностировать? Если проблема не здесь, я могу добавить больше кода.

(При необходимости: запуск Python 2.7.6 в Ubuntu 14.04)

    from bokeh.plotting import *
    from bokeh.objects import HoverTool, ColumnDataSource
    output_notebook()

    #All the same color just for testing
    colors = [
   "#191919", "#191919", "#191919", "#191919", "#191919", 
    "#191919", "#191919", "#191919", "#191919", "#191919",
    "#191919", "#191919", "#191919", "#191919", "#191919",
    "#191919", "#191919", "#191919", "#191919", "#191919", 
    "#191919", "#191919", "#191919", "#191919", "#191919"
    ]

    x_2 = []
    for i in trans_dat: x_2.append(i)

    y_2 = []
    for i in trans_dat.index: y_2.append(i)

    colors_2 = []
    kwordxstate_2 = []
    for y in y_2:
        for x in x_2:
            kword_state = trans_dat[x][y]
            kwordxstate_2.append(kword_state)
            colors_2.append(colors[kword_state])

    source = ColumnDataSource(
        data = dict(
            x_2=x_2,
            y_2=y_2,
            colors_2=colors_2,
            kwordxstate_2=kwordxstate_2,  
        )
    )

    rect(x_2, y_2, 1,1, source=source,
         x_range=x_2, y_range=y_2,
         color=colors_2, line_color=None,
         tools="resize,hover,previewsave", title="Keywords by state",
         plot_width=900, plot_height=400)

    grid().grid_line_color = None
    axis().axis_line_color = None
    axis().major_tick_line_color = None
    axis().major_label_text_font_size = "10pt"
    axis().major_label_standoff = 0
    xaxis().location = "top"
    xaxis().major_label_orientation = np.pi/3

    show()

person Eugene    schedule 12.06.2014    source источник
comment
Что такое trans_dat? Какие типы в x2 и y2? Прямо сейчас категориальные метки диапазона должны быть строками.   -  person bigreddot    schedule 12.06.2014
comment
trans_dat - это кадр данных, содержащий значения, которые я пытаюсь правильно отобразить. И x_2, и y_2 являются списками.   -  person Eugene    schedule 12.06.2014
comment
Списки, содержащие что? Сейчас для категорий поддерживаются только списки строк.   -  person bigreddot    schedule 13.06.2014
comment
Оба являются списками строк.   -  person Eugene    schedule 13.06.2014


Ответы (1)


Хорошо, мне нужен полный пример с некоторым прототипом trans_dat, чтобы копать дальше. Тем не менее, вот несколько общих замечаний, которые могут помочь:

x_range и y_range должны быть списком категорий без дубликатов, в том порядке, в котором они должны располагаться на оси.

x и y должны быть категориальными координатами для каждого прямоугольника, который вы хотите построить. x и y должны быть одинаковой длины.

Мне сразу же кажется странным, что вы передаете x_2 и y_2 для обе списка категорий, и координат. Обычно это ошибка.

Допустим, у вас есть следующие категории:

  • ось X: ["US", "Canada"]

  • ось Y: ["Tech", "Agriculture"]

Это то, что вы можете передать x_range и y_range. Но если вам нужен прямоугольник для каждой комбинации, вам нужно передать что-то вроде этого как x и y:

  • x: ["US", "US", "Canada", "Canada"]

  • y: ["Tech", Agriculture", "Tech", Agriculture"]

Это приведет к четырем прямоугольникам, по одному на каждую пару категорий. Если вы хотите оставить некоторые из них, это нормально:

  • x: ["US", "US", "Canada"]

  • y: ["Tech", Agriculture", Agriculture"]

Теперь не будет прямоугольника для координаты ("Канада", "Тех").

Это аналогично числовому случаю: у нас могут быть диапазоны [0,10] и [1,2] для осей x и y. Но координаты берутся из произведения этих двух диапазонов, таких как (0, 1,5) или (5,5, 2).

Делает ли это различие между параметрами диапазона (которые представляют собой список возможных категорий) и параметрами координат (которые являются комбинациями категорий, в которых вы хотите нанести глифы) более ясным? Дайте мне знать, если я могу добавить больше информации.

person bigreddot    schedule 13.06.2014
comment
Понятно! Длина x и y не была равна. - person Eugene; 14.06.2014
comment
Большой! Дайте мне знать, если я могу ответить что-нибудь еще - person bigreddot; 14.06.2014