Удалить столбцы с 0 высотой на гистограмме в тире - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь сделать гистограмму группы в тире, я строю коды предметов на оси x, чтобы они не были непрерывными числами, и я получаю пустые столбцы для отсутствующих кодов предметов, поэтому есть ли способ удалить этипробелы или невидимые бары. Это гистограмма, которую я получаю. Это мой код.

df = pd.read_csv('sampledata.csv')
a=df['SiteCode'].loc[df['SubjectStatus']=='In Progress'].value_counts()
a.index=a.index.astype(str)
b=df['SiteCode'].loc[df['SubjectStatus']=='Withdrawn'].value_counts()
b.index=b.index.astype(str)
x1=a.index
x2=b.index
trace1=go.Bar(
    x=x1,
    y=a.values,
    name='In Progress',
)
trace2=go.Bar(
    x=x2,
    y=b.values,
    name='Withdrawn',
)
app = dash.Dash()
app.layout = html.Div(
    dcc.Graph(id='graph',
        figure=go.Figure(data=[trace1,trace2],layout=go.Layout(barmode='group')))

if __name__=='__main__':
    app.run_server()

Заранее спасибо

PS: я нуб в даше и на питоне, так чтоуспокойся на мне.

1 Ответ

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

Вы должны попытаться установить barmode='stack', потому что barmode='group' добавил пустое место, если одна из ваших трасс имеет пустые значения.

import dash
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import plotly.graph_objs as go
import pandas as pd

app = dash.Dash(__name__)

df = pd.DataFrame({'x': [100, 100, 105, 110, 110, 115, 120, 125],
                   'y': [1, 2, 1, 1, 2, 2, 1, 1]})

colors = {
    'background': '#111111',
    'background2': '#FF0',
    'text': '#7FDBFF'
}
df1 = df.loc[df["y"] == 1]
df2 = df.loc[df["y"] == 2]
trace1 = go.Bar(
                x=df1["x"],
                y=df1["y"],
                name='In Progress',
)
trace2 = go.Bar(
                x=df2["x"],
                y=df2["y"],
                name='Withdrawn',
)

app.layout = html.Div(children=[
        html.Div([
            html.H5('ANNx'),
            dcc.Graph(
                id='cx1',
                figure=go.Figure(data=[trace1, trace2],
                                 layout=go.Layout(barmode='group')))],)])


if __name__ == '__main__':
    app.run_server(debug=True)

Например, в этом коде при значениях 105, 115 и 120 одна трасса пуста, и это создает пространство на графике: Bar group

Использование другойБармод решил эту проблему:

Bar stacked

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...