前提
python初心者です。
Excelのデータを使って列ごとに散布図(直線)を表示させたいのですが、うまくできませんでした。。
実現したいこと
・列ごとに散布図(直線)を別シートに表示させたい
A列をy軸の基準値としてグラフを作成していきたいです。
発生している問題・エラーメッセージ
列ごとにグラフを横に並べられない
該当のソースコード
python
1import openpyxl as op 2 3file_path="data.xlsx" 4wb = op.load_workbook(file_path) 5ws = wb["データ"] 6ws2 = wb["グラフ"] 7 8chart = op.chart.ScatterChart("marker") 9chart.x_axis.title = "ddd" 10chart.y_axis.title = "eee" 11 12MAX_row = ws.max_row 13MAX_column = ws.max_column 14 15data = op.chart.Reference(ws,min_col=2,min_row=1,max_row = MAX_row) 16time = op.chart.Reference(ws,min_col=1,min_row=2,max_row = MAX_row) 17series= op.chart.Series(data,time,title_from_data=True) 18series.graphicalProperties.line.noFill=False 19chart.Series.append(series) 20 21chart.y_axis.scaling.min=0 22chart.y_axis.scaling.max=0.60 23 24chart.x_axis.scaling.min=0.4 25chart.x_axis.scaling.max=0.5 26 27ws2.add_chart(chart,"B8") 28 29wb.save(file_path) 30
試したこと
for文でループのようにやるのかと思ったのですが、エクセルを開いたとき画像が表示できませんでしたと出てしまいました。
import openpyxl as op file_path="data.xlsx" wb = op.load_workbook(file_path) ws = wb["データ"] ws2 = wb["グラフ"] chart = op.chart.ScatterChart("marker") chart.x_axis.title = "ddd" chart.y_axis.title = "eee" MIN_row = ws.min_row MIN_column = ws.min_column MAX_row = ws.max_row MAX_column = ws.max_column time = op.chart.Reference(ws,min_col=MIN_column+1,min_row=MIN_row+1,max_row = MAX_row) for idx in range(MIN_column+2,Max_column+1): data = op.chart.Reference(ws,min_col=idx,min_row=MIN_row,max_row = MAX_row) series= op.chart.Series(data,time,title_from_data=True) series.graphicalProperties.line.noFill=False chart.Series.append(series) chart.y_axis.scaling.min=0 chart.y_axis.scaling.max=0.60 chart.x_axis.scaling.min=0.4 chart.x_axis.scaling.max=0.5 ws2.add_chart(chart,"B8") wb.save(file_path)
> 列ごとにグラフを横に並べられない
ではどのように表示されるのでしょうか?
質問ありがとうございます。
該当のソースコードのところではfor文はないので一個のグラフがでます。
試したことのところで列ごとにできると思ったのですが、エクセルファイルを開いた際に問題なく開くために図を削除しましたとでます。
実行した際のエラーが出ないため、質問させていただきました。
> 列ごとに散布図
というのは、みかんのグラフ、りんごのグラフ・・・と作成したいということでしょうか?
”試したこと”のコードを見ると、1つのグラフにデータを追加しているように見えました。(それがエラーの原因かは分かりませんが)
meg_さんの解釈通りでございます。
みかんのグラフ、りんごのグラフというのを横に並べていきたいと考えてます。
「該当のソースコード」を試したところ下記エラーが発生しました。ご確認ください。
AttributeError: 'ScatterChart' object has no attribute 'Series'
返信遅くなってしまって申し訳ございません。
19行目のScatterChartの最初Sが小文字でないといけませんでした。
ご確認ありがとうございます。
