Только один бар на графике bqplot - PullRequest
0 голосов
/ 19 октября 2018

У меня есть некоторые данные в форме:

Имя Score1 Score2 Score3 Score4 Bob -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]) 

но все, что я получаю, это один бар, я предполагаю, потому что имя имеет только одно значение,Есть ли способ установить заголовки столбцов в качестве данных х?или каким-либо другим способом решить эту проблему

1 Ответ

0 голосов
/ 10 февраля 2019

Я думаю, что это то, к чему стремится Дуг.Ваша длина данных 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

...