記事ディレクトリ
序文
以前に、pyecharts モジュールを使用して単純な折れ線グラフを描画する方法を学びました。そこで、今日は、提供されたデータに従ってデータを処理し、折れ線グラフの形式で表示する方法を共有します。
情報処理
これは、2020 年の米国、インド、日本における新たな歯冠の診断、治療、死亡、新規診断の数に関するデータです。これらのデータは私のリソースにアップロードしますので、必要に応じてダウンロードしてください。
このようなデータを見ると、「すぐには読みたくない」と感じてしまうでしょうが、急いでいる必要はありません。実際、注意していれば、内部の層を見ることができます。さらに、ツールを使用してデータのビューを表示することで、データをより深く理解できるようになります。
データを取得する
まず、ファイル操作を使用して、これら 3 つのファイル内のデータを取得する必要があります。
# 打开我们的测试数据
f_us = open("D:/桌面/美国.txt", 'r', encoding='UTF8')
f_jp = open("D:/桌面/日本.txt", 'r', encoding='UTF8')
f_in = open("D:/桌面/印度.txt", 'r', encoding='UTF8')
# 读取数据
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()
データには中国語が含まれているため、読み取る形式を指定する必要がありますUTF_8
。
データをフィルタリングする
データを取得したら、データを処理する必要があります。{ } [ ]
データがデータを表すことは誰もが知っていますJSON
が、ファイル内にはまだ JSON ではないデータがいくつかあるため、それらに対処する必要があります。また、描画するのは 2020 年のデータのみであるため、無駄なデータを除外する必要があります。
# 处理数据
us_data = us_data.replace('jsonp_1629344292311_69436(','') # 用空字符串来替换这些多余的数据
jp_data = jp_data.replace('jsonp_1629350871167_29498(','')
in_data = in_data.replace('jsonp_1629350745930_63180(','')
us_data = us_data[:-2] # 截取掉后面的 );
jp_data = jp_data[:-2]
in_data = in_data[:-2]
JSONデータをPythonデータに変換する
JSON
これらの冗長データをフィルターで除外した後、これらのデータをデータに変換する必要がありますpython
。
# 将json数据转换为python数据
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
この関数を使用するときは、モジュールをjson.loads()
インポートする必要があることを忘れないでください。json
横座標データと縦座標データをフィルターで除外する
trend
まず内部のデータを取得します。
us_trend = us_dict['data'][0]['trend']
jp_trend = jp_dict['data'][0]['trend']
in_trend = in_dict['data'][0]['trend']
横軸の日付updateDate
データを取得する
x_data = us_trend['updateDate'][:314] # 前314个数据表示2020年数据
座標data
データの取得
us_y_data = us_trend['list'][0]['data'][:314]
jp_y_data = jp_trend['list'][0]['data'][:314]
in_y_data = in_trend['list'][0]['data'][:314]
処理されたデータに基づいて折れ線グラフを描画します
まず空の折れ線グラフを作成します
from pyecharts.charts import Line
# 创建折线图
line = Line()
空の折れ線グラフの水平および垂直座標データを追加します。
# 添加横纵坐标数据
line.add_xaxis(x_data)
line.add_yaxis('美国确诊人数',us_y_data)
line.add_yaxis('日本确诊人数',jp_y_data)
line.add_yaxis('印度确诊人数',in_y_data)
グローバル構成オプションを追加する
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
# 设置全局配置项
line.set_global_opts(title_opts=TitleOpts(title='2020年美国确诊人数',pos_left='center',pos_bottom='1%'),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True),
visualmap_opts=VisualMapOpts(is_show=True)
)
プログラムを実行するとrender,html
ファイルが生成されるので、それを実行します。
ここでは、データが多すぎるため、表示されるグラフィックが非常に複雑になりますが、シリーズ構成オプションを設定して、破線データの表示をキャンセルすることができます。
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts
# 添加横纵坐标数据
line.add_xaxis(x_data)
line.add_yaxis('美国确诊人数',us_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis('日本确诊人数',jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis('印度确诊人数',in_y_data,label_opts=LabelOpts(is_show=False))
全体のコード表示
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts
# 打开我们的测试数据
f_us = open("D:/桌面/美国.txt", 'r', encoding='UTF8')
f_jp = open("D:/桌面/日本.txt", 'r', encoding='UTF8')
f_in = open("D:/桌面/印度.txt", 'r', encoding='UTF8')
# 读取数据
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()
# 处理数据
us_data = us_data.replace('jsonp_1629344292311_69436(','')
jp_data = jp_data.replace('jsonp_1629350871167_29498(','')
in_data = in_data.replace('jsonp_1629350745930_63180(','')
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
# 将json数据转换为python数据
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# 获取对应的横坐标与纵坐标数据
us_trend = us_dict['data'][0]['trend']
jp_trend = jp_dict['data'][0]['trend']
in_trend = in_dict['data'][0]['trend']
x_data = us_trend['updateDate'][:314]
us_y_data = us_trend['list'][0]['data'][:314]
jp_y_data = jp_trend['list'][0]['data'][:314]
in_y_data = in_trend['list'][0]['data'][:314]
# 创建折线图
line = Line()
# 添加横纵坐标数据
line.add_xaxis(x_data)
line.add_yaxis('美国确诊人数',us_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis('日本确诊人数',jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis('印度确诊人数',in_y_data,label_opts=LabelOpts(is_show=False))
# 设置全局配置项
line.set_global_opts(title_opts=TitleOpts(title='2020年美国确诊人数',pos_left='center',pos_bottom='1%'),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True),
visualmap_opts=VisualMapOpts(is_show=True)
)
line.render()