首页 > 解决方案 > 从“转置”的 ColumnDataSource 创建 Bokeh DataTable

问题描述

我想以一种更容易让 DataTable 看到的方式将 DataTable 链接到具有多行的图形。考虑以下示例:

'<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>0.5</th>\n      <th>0.75</th>\n      <th>0.9</th>\n      <th>0.95</th>\n      <th>0.99</th>\n      <th>A</th>\n      <th>B</th>\n      <th>C</th>\n      <th>D</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>1121045</th>\n      <td>75</td>\n      <td>90</td>\n      <td>103</td>\n      <td>112</td>\n      <td>124.63</td>\n      <td>x</td>\n      <td>a</td>\n      <td>alpha</td>\n      <td>2019-07-18 00:00:00</td>\n    </tr>\n    <tr>\n      <th>1121529</th>\n      <td>77</td>\n      <td>92</td>\n      <td>105.3</td>\n      <td>114.65</td>\n      <td>992.95</td>      <td>x</td>\n      <td>a</td>\n      <td>alpha</td>\n      <td>2019-07-21 00:00:00</td>    </tr>\n    <tr>      <th>4006922</th>\n      <td>69</td>      <td>86</td>      <td>101</td>      <td>106</td>      <td>116</td>      <td>y</td>      <td>b</td>      <td>beta</td>      <td>2019-07-14 00:00:00</td>    </tr>    <tr>      <th>4006926</th>      <td>83</td>      <td>91</td>      <td>112</td>      <td>121</td>      <td>166</td>      <td>y</td>      <td>b</td>      <td>gamma</td>      <td>2019-07-14 00:00:00</td>    </tr>    <tr>      <th>4006927</th>      <td>55</td>      <td>63</td>      <td>72</td>      <td>81</td>      <td>100</td>      <td>y</td>      <td>c</td>     <td>beta</td>     <td>2019-07-14 00:00:00</td>    </tr>  </tbody></table>'

目前,我正在绘制与 columns 对应的线[0.5, 0.75, 0.9, 0.95, 0.99],但这是“逐行”完成的,即每个索引元素一行。这是通过CDSView对该数据帧进行转置来实现的。本质上,我将索引转换为列并过滤掉线['A', 'B', 'C', 'D']图。

我想制作一个看起来像上表的 DataTable,使用相同的底层ColumnDataSource以保留链接的选择行为。

或者,是否有等效于“RowDataSource”的方法?我不知道这种机制,但这将从绘图角度(而不是 DataTable 角度)解决这个问题。

标签: pythonbokeh

解决方案


推荐阅读