bqplot图表中仅显示一个柱形

时间:2018-10-19 09:18:27

标签: python pandas bqplot

我有一些数据,格式为:

名称得分1得分2得分3得分4 鲍勃-2 3 5 7

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

enter image description here

我正在尝试:

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数据?或其他解决方法

1 个答案:

答案 0 :(得分: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]) 

enter image description here