'20/01/31更新:文末の関連記事を更新したことで、本記事のコードを更新しました。
本記事では、次の1,2のような処理をすることで、最終的に下図のような表と散布図を作成します。
1. 複数のcsvファイルから指定した2列をそれぞれ抽出して、列方向へ並べてゆき、ひとつのエクセルファイルにて保存する。
2. 次に、Excel上で重ね合わせ散布図を作成する。

■本プログラム
使用手順は本コードの下に記載してます。
import os, sys, glob
import re
sys.path.append(".")
import csv_combine_excel as mymodu
import pandas as pd
import numpy as np
from openpyxl import load_workbook
from openpyxl.chart import ScatterChart,Reference,Series
from openpyxl.chart.text import RichText
from openpyxl.drawing.text import Paragraph, ParagraphProperties, CharacterProperties, Font
import datetime
now = datetime.datetime.now()
now = now.strftime("%y%m%d")
def csv2excel_graph(fname):
wb = load_workbook(fname)
rows = wb['Sheet1'].max_row
columns = wb['Sheet1'].max_column
print("rows -> " + str(rows))
print("columns -> " + str(columns))
ws = wb.active
chart = ScatterChart()
myfont = Font(typeface='Calibri')
cp = CharacterProperties(latin=myfont, sz=1400)
chart.title = "hogehoge"
chart.x_axis.title = 'x axis'
chart.x_axis.title.tx.rich.p[0].r[0].rPr = cp
chart.x_axis.txPr = RichText(p=[Paragraph(pPr=ParagraphProperties(defRPr=cp), endParaRPr=cp)])
chart.y_axis.title = 'y axis'
chart.y_axis.title.tx.rich.p[0].r[0].rPr = cp
chart.y_axis.txPr = RichText(p=[Paragraph(pPr=ParagraphProperties(defRPr=cp), endParaRPr=cp)])
for i in range(1, columns, 2):
x_values = Reference(ws, min_col=i, min_row = 2, max_row = rows)
y_values = Reference(ws, min_col=i+1, min_row = 1, max_row = rows)
con = Series(y_values, x_values, title_from_data=True)
con.marker.symbol = 'circle'
con.marker.size = 2
chart.series.append(con)
ws.add_chart(chart, "A18")
wb.save(fname)
if __name__ == '__main__':
myfiles = glob.glob("*.csv")
myfiles = sorted(myfiles, key=lambda x:int((re.search(r"[0-9]+", x)).group(0)))
mycolumn_name_list = ('x', 'y')
myheader = 1
mydata_startrow = 3
outfile = now + '_' + mycolumn_name_list[0] + '_' + mycolumn_name_list[1] + '.xlsx'
mymodu.csv2excel(myfiles, mycolumn_name_list, myheader, mydata_startrow, outfile)
csv2excel_graph(outfile)
●使用手順
1. 自作モジュールは、下記リンク先にあるコードを「csv_combine_excel.py」のファイル名で保存する。
Python csvファイル中にある指定2列を複数ファイルからひとつのExcelファイルを作成する - HK29’s blog
2. 本体プログラムは、本記事の上記「本プログラム」をコピペして適当な名前、例えば「csv2excel_plotgraph.py」と付けて保存する。
3. 適当なcsvファイルをいくつか用意する(上記リンク先のような数値の行列データ)。下図はファイル構成であり、csvファイル名と数に制約条件はない。

4. $ python csv2excel_plotgraph.py などとして本体ファイルを実行する
5. 実行後
下図のようにエクセルファイルと、パイキャッシュフォルダができる。

以上
<広告>
リンク