Невозможно построить график из результатов запросов PostgreSQL в приложении Dash - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь написать простой код, чтобы просто построить гистограмму некоторых названий фруктов на оси X против соответствующих единиц продаж.Цель этого кода - просто понять, как запрашивать результаты postgres из базы данных, размещенной на сервере heroku, через приложение-приборную панель.

Ниже приведен код,

from dash import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import psycopg2
import os

DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
cur = conn.cursor()
cur.execute("SELECT fruits FROM pgrt_table")
fruits1=cur.fetchall()
#print(fruits1)
cur.execute("SELECT sales FROM pgrt_table")
sales1=cur.fetchall()


app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(
        children='Hello Dash'
    ),

    html.Div(
        children='''Dash: A web application framework for Python.'''
    ),

    dcc.Graph(
        id='example-graph',
       figure=go.Figure(
            data=[
                go.Bar(
                x=fruits1, y=sales1, name='SF'),
                #{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
            ],

            #'layout':{
            #    'title': 'Dash Data Visualization'
            #}
        )
    )
])

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

Ниже выводится

Вывод на вышеприведенный код

Соответствующий вывод - это просто оси без гистограмм.Соединение с базой данных работает, так как печать fruits1 или sales1 дает мне значения из столбцов в postgres.Единственная проблема - это заговор.

ПРИМЕЧАНИЕ. Этот вопрос был сильно изменен, поскольку предыдущий черновик был чрезвычайно расплывчатым, и в нем не было кода для отображения.

1 Ответ

0 голосов
/ 01 июля 2018

Пример:

fruits1 = [('apple',), ('banana',),
           ('mango',), ('pineapple',),
           ('peach',), ('watermelon',)]

Вывод вашей базы данных не может использоваться напрямую:

xData = [fruit[0] for fruit in fruits1]
# gives ['apple', 'banana', 'mango', 'pineapple', 'peach', 'watermelon']
yData = [sales[0] for sales in sales1]

Вы должны назначить свои данные для объекта go.Bar:

go.Bar(x=xData, y=yData, name='SF')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...