Лучший способ сделать эту визуализацию диаграммы в Python - PullRequest
2 голосов
/ 27 апреля 2020

Я прошу прощения, если это неуместный вопрос - я новичок в этом сайте.

У меня есть линейный график (который можно найти здесь ), и я хочу чтобы иметь возможность программно сделать это в Python.

Как видите, это линейный график без увеличенной оси X. На оси абсцисс есть прямоугольники, в каждом из которых есть дескриптор и номер. Пункт, который изображен на графике, - это вышеупомянутое число, связанное с каждым столбцом.

Я знаком с библиотекой визуализации Bokeh, но, похоже, не смог получить хороший результат. Matplotlib также является опцией, но эта библиотека обычно генерирует довольно грубую графику. Может ли кто-нибудь сказать мне, видели ли они такой график раньше (например, более конкретное c имя, чем «линейный график»)? Мое единственное реальное ограничение заключается в том, что мне нужно, чтобы это было довольно легко отображать в Интернете, поэтому я изначально посмотрел на Bokeh. Любые предложения приветствуются!

1 Ответ

1 голос
/ 27 апреля 2020

Если я правильно понимаю вашу проблему, вам нужен график, на оси которого помечены только мелкие отметки.

Я согласен с тем, что matplotlib выглядит грубо: я думаю, что Plotly - довольно дружественная библиотека для создания графики, которая интерактивна и прекрасно отображается на веб-странице.

Чтобы встроить график в веб-страницу, вы можете использовать библиотеку chart_studio, затем создать учетную запись Chart Studio с именем пользователя и получить свой ключ API.

import plotly as py
import plotly.graph_objects as go 
import chart_studio
import chart_studio.plotly as ch_py
import chart_studio.tools as tls

x_data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y_data = [3, 5, 3.3, 6.2, 3.5, 4.2, 3.7, 6.3, 4.4]

fig = go.Figure(data = go.Scatter(x = x_data, y = y_data))

fig.update_layout(
    xaxis = dict(
        tickmode = 'array',
        tickvals = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5],
        ticktext = ['str1', 'str2', 'str3', 'str4', 'str5', 'str6', 'str7', 'str8', 'str9'] 
    ),
    yaxis = dict(
        tickmode = 'array',
        tickvals = [1,2,3,4,5,6,7]
    )
)

fig.show()

# create a chartstudio account and generate an API key
# username = 'xxxxxxxx'
# api_key = 'xxxxxxxxxx'

# chart_studio.tools.set_credentials_file(username=username, api_key=api_key)
# ch_py.plot(fig, filename = 'my_filename', auto_open = True)

Он будет отображаться в браузер автоматически при запуске:

enter image description here

...