pandas 在bqplot图表中仅获得一个条形

3phpmpom  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(111)

我有一些数据的形式:
姓名得分1得分2得分3得分4鲍勃-2 3 5 7
我试图使用bqplot绘制一个真正基本的条形图
x1c 0d1x的数据
我在努力:

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

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

unhi4e5o

unhi4e5o1#

我想这就是Doug的意思。x和y数据的长度应该相同。在本例中,x是列标签,y是得分值。您应该将DataFrame的“Name”列设置为索引;这将防止它被绘制为值。
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])

字符串
x1c 0d1x的数据

相关问题