spyder plotly: проблема с построением барплотов - PullRequest
0 голосов
/ 26 ноября 2018

обратите внимание, что barplot ('Age', False) работает без каких-либо ошибок, но не может построить график в chrome Я использую spyder для анализа истощения сотрудников из набора данных сотрудников ibm hr из kaggle.Для построения графиков я использую библиотеку plotly, но я не могу строить графики с помощью этой библиотеки, в то время как я могу успешно строить точечные и круговые диаграммы.
Прикрепление примера кода моей работы
spyder успешно распечатал plot_distribution('Age', False)этот график в Chrome, но не может построить barplot('Age', False)

def barplot(var_select, x_no_numeric) :
tmp1 = data[(data['Attrition'] != 0)]
tmp2 = data[(data['Attrition'] == 0)]
tmp3 = pd.DataFrame(pd.crosstab(data[var_select], data['Attrition']), )
tmp3['Attr%'] = tmp3[1] / (tmp3[1] + tmp3[0]) * 100
if x_no_numeric == True:
    tmp3 = tmp3.sort_values(1, ascending=False)
    color = ['skyblue', 'gold']
    trace1 = go.Bar(
            x = tmp1[var_select].value_counts().keys().tolist(),
            y = tmp2[var_select].value_counts().values.tolist(),
            name = 'yes_attrition', opacity = 0.8,
            marker = dict(color = 'gold', line=dict(color='#000000',width=1)))
    trace2 = go.Bar(
            x = tmp1[var_select].value_counts().keys().tolist(),
            y = tmp2[var_select].value_counts().values.tolist(),
            name = 'no_attrition', opacity = 0.8,
            marker = dict(color='skyblue', line=dict(color='#000000',width=1)))
    trace3 = go.Scatter(
            x = tmp3.index,
            y = tmp3['Attr%'],
            yaxis = 'y2',
            name = '%Attrition', opacity= 0.5,
            marker= dict(color='black',line=dict(color='#000000',width=0.5)))
    layout = dict(title= str(var_select),
            xaxis = dict(),
            yaxis = dict(title='count'),
            yaxis2 = dict(range= [-0,75],
                          overlaying = 'y',
                          anchor = 'x',
                          side = 'right',
                          Zeroline = False,
                          showgrid = False,
                          title = '%Attrition'))
    fig = go.Figure(data=[trace1, trace2, trace3], layout= layout)
    py.plot(fig)

plot_distribution('Age', False)
barplot('Age', False)
...