首页 文章

Bokeh中相关图的问题

提问于
浏览
4

当我通过 rect() (来自Bokeh)绘制我的数据时,我在可视化中得到了一个奇异的水平块 . 数据打印正确,据我所知格式正确( type() 验证它们都是列表) . 任何人都能诊断出来吗?如果问题不在这里,那么我可以添加更多代码 .

(如果需要:在Ubuntu 14.04上运行Python 2.7.6)

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()

1 回答

  • 5

    好吧,我需要有一个完整的例子与一些原型 trans_dat 进一步挖掘 . 以下是一些可能有所帮助的一般性评论:

    x_rangey_range 应该都是没有重复的类别列表,按照您希望它们在轴上的顺序排列 .

    xy 应该是您要绘制的每个矩形的分类坐标 . xy 应该是相同的长度 .

    对于类别列表和坐标,你立即传递 x_2y_2 ,这让我觉得很奇怪 . 这通常是个错误 .

    假设您有以下类别:

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

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

    这些是您可以传递给 x_rangey_range 的内容 . 但是如果你想为每个组合使用rect,那么你需要传递像 xy 这样的东西:

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

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

    这将导致四个rects,每对类别一个 . 如果你想留下一些,那很好:

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

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

    现在(“加拿大”,“技术”)坐标没有矩形 .

    这类似于数值情况:对于x和y轴,我们可能有[0,10]和[1,2]的范围 . 但坐标取自这两个范围的乘积,如(0,1.5)或(5.5,2) .

    这是否区分范围参数(可能的类别列表)和坐标参数(您想要在其中绘制字形的类别的组合)更清楚?如果我可以添加更多信息,请告诉我 .

相关问题