Категориальная гистограмма в боке - PullRequest
0 голосов
/ 06 мая 2019

у меня есть датафрейм

    Experience  Microsoft  SAS  Salesforce
0     1 To 3          38   29          48
1   12 To 18           4    2           4
2     3 To 8          46   22          45
3    8 To 12          12    6           8

В этом я хочу Опыт по оси X и Microsft, SAS, Salesforce по оси Y

что я пробовал до сих пор:

table2 = pd.read_csv ('Experience.csv')

полный = table2.columns.tolist () full_val = table2.values.T.tolist ()

tech = table2.drop (['Experience'], axis = 1,) он = tech.max ()

data = {}

для i в диапазоне (len (full)): data [full [i]] = full_val [i]

source = ColumnDataSource(data=dict(x=table2['Experience'],
                                    y=value1))


p = figure(x_range=exp, y_range=(0, 50), plot_height=350, title="Experience wise opening",
           toolbar_location=None, tools="")


p.vbar(x=dodge('x', -0.25, range=p.x_range), top='y', width=0.2, source=source,
            legend=value(key))


p.show()

Показывает только последнее значение индекса, которое является salesforce. Я хочу показать все значения;

1 Ответ

1 голос
/ 06 мая 2019

В коде было еще несколько мелких ошибок, поэтому он ничего не показывал на моем ноутбуке. Код ниже должен работать и давать желаемый результат.

from bokeh.models import ColumnDataSource, LabelSet
from bokeh.plotting import figure
from bokeh.transform import dodge
from bokeh.io import show
from bokeh.palettes import Viridis

data = {'Experience': ['1 To 3', '12 To 18', '3 To 8', '8 To 12'], 'Microsoft': [38, 4, 46, 12], 'SAS': [29, 2, 22, 6], 'Salesforce': [48, 4, 45, 8]}
source = ColumnDataSource(data)
exp = data['Experience']
ys = list(data.keys())
ys.remove('Experience')
TOOLTIPS = [("Experience", "@Experience")]
p = figure(x_range=exp, y_range=(0, 60), plot_height=350, title="Experience wise opening", tooltips=TOOLTIPS)
colorList = Viridis[len(ys)]
labels = []
for y, offset, color in zip(ys, [-0.25, 0, 0.25], colorList):
    labels = LabelSet(x=dodge('Experience', offset, range=p.x_range), y=y, text=y, source=source, text_align='center')
    p.vbar(x=dodge('Experience', offset, range=p.x_range), top=y, width=0.2, source=source, legend=y + ' ', color=color)
    p.add_layout(labels)
    TOOLTIPS.append((y, "@"+y))
p.legend.click_policy="hide"
show(p)

enter image description here

...