web-dev-qa-db-ja.com

pythonグラフの出力をHTML Webページに直接取得する方法

pandasとnumpyのようなさまざまなライブラリを使用して、最終的にグラフを生成するデータフレームを生成しています。

次に、このグラフをHTMLの単純なWebページに表示する必要があります。

注:HTMLページでユーザーから2〜3つの入力を受け取り、そのデータをpythonファイルに渡します。その後、python =ファイルは、(HTMLページからの)指定されたデータに基づいてグラフを生成し、このグラフをHTMLページに渡す必要があります。

df[[main_data]].plot()

ここで、main_dataは変数であり、その値はHTMLページから取得されます。そして私はpython SPYDERのコードを実行しています。そして私はフレームワークを使用していません。

6
Jay Desai

これは、グラフをhtmlとして表示することの意味によって多少異なります。私はいくつかの方法を見ることができます。最初で最も簡単な方法は、図をpngとして保存してから、html内のファイルへのパスを指定することです。

Pythonコード:

import pandas as pd
import matplotlib.pyplot as plt

s = pd.Series([1, 2, 3])
fig, ax = plt.subplots()
s.plot.bar()
fig.savefig('my_plot.png')

HTML:

<img src='my_plot.png'>

2番目の方法は、図をbase64としてエンコードすることです。これには、移植性があり、非常に大きく扱いにくいhtmlファイルを作成するという欠点があります。私はWebプログラマーではないので、気づいていない他の警告があるかもしれません

python:

import io
import base64

def fig_to_base64(fig)
    img = io.BytesIO()
    fig.savefig(img, format='png',
                bbox_inches='tight')
    img.seek(0)

    return base64.b64encode(img.getvalue())

encoded = fig_to_base64(fig)
my_html = '<img src="data:image/png;base64, {}">'.format(encoded.decode('utf-8'))

my_htmlをhtmlファイルに渡すか、jinja2または使用するものを何でも注入できます。ここにSO htmlでのbase64の表示に関する投稿 https://stackoverflow.com/a/8499716/363902 と画像をbase64としてエンコード 変換方法PIL Image.imageオブジェクトからbase64文字列へ?

8
johnchase

MatplotlibチャートをWebブラウザーにエクスポートする最良の方法は、mpld3ライブラリを使用することです。 ここに例があります。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import mpld3
from mpld3 import plugins
np.random.seed(9615)

# generate df
N = 100
df = pd.DataFrame((.1 * (np.random.random((N, 5)) - .5)).cumsum(0),
                  columns=['a', 'b', 'c', 'd', 'e'],)

# plot line + confidence interval
fig, ax = plt.subplots()
ax.grid(True, alpha=0.3)

for key, val in df.iteritems():
    l, = ax.plot(val.index, val.values, label=key)
    ax.fill_between(val.index,
                    val.values * .5, val.values * 1.5,
                    color=l.get_color(), alpha=.4)

# define interactive legend

handles, labels = ax.get_legend_handles_labels() # return lines and labels
interactive_legend = plugins.InteractiveLegendPlugin(Zip(handles,
                                                         ax.collections),
                                                     labels,
                                                     alpha_unsel=0.5,
                                                     alpha_over=1.5, 
                                                     start_visible=True)
plugins.connect(fig, interactive_legend)

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Interactive legend', size=20)

mpld3.show()

https://mpld3.github.io/quickstart.html

1
Noor Ameen

グラフを特定の場所に保存し、画像ファイルを読み取るためのスクリプトを書きたい場合は、pic.pngHTMLに入れます。入力を取得するには、データのTabular構造を作成し、各入力の後にデータをファイルに保存します。file.csvPythonで読み取って、入力から値を追加し続けます。

import matplotlib.pyplot as plt
df.hist()
plt.savefig('path/to/pic.png')

次に、HTMLコードを作成して、その画像ファイルを読み取り、必要に応じて出力します。これがお役に立てば幸いです。

0
Harry_pb

Plotlyを使用することもできます。これによりinteractive graphs。また、生成されたデータをHTML files, apply bootstrap styling

チェックアウト

https://plot.ly/python/v3/html-reports/
0