我有一些数据,格式为:
名称得分1得分2得分3得分4 鲍勃-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数据?或其他解决方法
答案 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])