0

我有一些表格数据:

姓名 Score1 Score2 Score3 Score4 Bob -2 3 5 7

我正在尝试使用 bqplot 绘制一个非常基本的条形图

在此处输入图像描述

我正在努力:

sc_ord = OrdinalScale()
y_sc_rf = LinearScale()

bar_chart = Bars(x=data6.Name,
             y=[data6.Score1, data6.Score2, data6.Score3],
             scales={'x': sc_ord, 'y': y_sc_rf},
             labels=['Score1', 'Score2', 'Score3'],
            )

ord_ax = Axis(label='Score', scale=sc_ord, grid_lines='none')
y_ax = Axis(label='Scores', scale=y_sc_rf,  orientation='vertical', 
grid_lines='solid')

Figure(axes=[ord_ax, y_ax],  marks=[bar_chart]) 

但我得到的只是一个栏,我假设因为 Name 只有一个值,有没有办法将列标题设置为 x 数据?或其他解决此问题的方法

4

1 回答 1

0

我想这就是道格的意思。您的 x 和 y 数据的长度应该相同。在这种情况下,x是列标签,y是得分值。您应该将 DataFrame 的“名称”列设置为索引;这将防止它被绘制为一个值。

PS。下次,如果您确保您的代码是一个完整的示例,可以在没有外部数据的情况下从头开始运行(MCVE,https ://stackoverflow.com/help/mcve ),您可能会得到更快的答案。

BQPlot 文档有很多使用更复杂的 pyplot 接口的好例子,值得一读:https ://github.com/bloomberg/bqplot/blob/master/examples/Marks/Object%20Model/Bars.ipynb

from bqplot import *
import pandas as pd
data = pd.DataFrame(
    index = ['Bob'],
    columns = ['score1', 'score2', 'score3', 'score4'],
    data = [[-2, 3,5,7]]
)

sc_ord = OrdinalScale()
y_sc_rf = LinearScale()

bar_chart = Bars(x=data.columns, y = data.iloc[0],
             scales={'x': sc_ord, 'y': y_sc_rf},
             labels=data.index[1:].tolist(),
            )

ord_ax = Axis(label='Score', scale=sc_ord, grid_lines='none')
y_ax = Axis(label='Scores', scale=y_sc_rf,  orientation='vertical', 
grid_lines='solid')

Figure(axes=[ord_ax, y_ax],  marks=[bar_chart]) 

在此处输入图像描述

于 2019-02-10T16:02:22.580 回答