MATLABを用いたExcelデータのグラフ作成および画像保存プログラム_1(MATLAB R2021b)
0.はじめに
この内容はあくまで自身の備忘録として残しています。
プログラムを学びたい方は、他のリソースを参照することをお勧めします。
1.目的
このプログラムは、Excelファイル(test.xlsx)内の各シートのデータを基に、特定の列の値をグラフ化し、画像ファイルとして保存することです。
実行ファイルとExcelファイルは、同一ディレクトリにあります。
今回はシート4つにある1列目と4列目を抽出し、x軸とy軸に使用しています。
また、全シートの最大値も自動的に得られ、10の位で丸め込んでいます。データの例は下記の通りです(Column1は0.01ずつ増えていき、あとの列は基本乱数にしました。また、最大値と最小値が適切に得られているか確認するため、Column4に関しては部分的に手動でパラメータを変更しています)。
2.プログラム
%% Clear
% ワークスペースをクリア
clear;
%%
% 数値を10の位で丸め込む関数
roundToNearestTen = @(x) ceil(x / 10) * 10;
roundDownToNearestTen = @(x) floor(x / 10) * 10;
%%
% Excelファイルの情報を取得
[status, sheets] = xlsfinfo('test.xlsx');
numSheets = numel(sheets);
extention_jpg = '.jpg';
% 初期化
maxValue_x = -Inf;
maxValue_y = -Inf;
minValue_y = Inf;
% 各シートにループでアクセスして最大値と最小値を取得
for i = 1:numSheets
sheetName = sheets{i};
data = xlsread('test.xlsx', sheetName);
% シート内の最大値と最小値を取得
firstValue = data(1, 1);
sheetMax_x = max(data(1:end,1)-firstValue);
sheetMax_y = max(data(1:end,4));
sheetMin_y = min(data(1:end,4));
% 全シートの中での最大値を更新
if sheetMax_x > maxValue_x
maxValue_x = sheetMax_x;
end
if sheetMax_y > maxValue_y
maxValue_y = sheetMax_y;
end
if sheetMin_y < minValue_y
minValue_y = sheetMin_y;
end
end
% 最大値と最小値を10の位で丸め込む
maxValue_x = roundToNearestTen(maxValue_x);
maxValue_y = roundToNearestTen(maxValue_y);
minValue_y = roundDownToNearestTen(minValue_y);
% 各シートにループでアクセスしてグラフを作成
for i = 1:numSheets
sheetName = sheets{i};
data = xlsread('test.xlsx', sheetName);
% データの最初の値を基準に調整
firstValue = data(1, 1);
Column1 = data(1:end,1);
Column1 = Column1 - firstValue;
Column4 = data(1:end,4);
%% グラフ作成
figure('WindowState','maximized')
plot(Column1,Column4,'k','MarkerSize',20,'LineWidth',1);
xlabel('Column1','FontName','Times','FontSize',24,'FontWeight','bold')
ylabel('Column4','FontName','Times','FontSize',24,'FontWeight','bold')
xlim([0 maxValue_x]);
ylim([minValue_y maxValue_y]);
ax = gca;
ax.FontSize = 20;
ax.FontName = 'Times';
ax.FontWeight = 'bold';
pbaspect([3 1 1])
% 画像ファイルとして保存
FileName = strcat(sheetName,extention_jpg);
saveas(gcf,FileName)
close
end
%% ファイル移動
% Graphフォルダを作成し、画像ファイルを移動
mkdir Graph
movefile('*.jpg', 'Graph')
ワークスペースをクリア:
clearコマンドでワークスペースをクリアします。
関数の定義:
数値を10の位で丸め込む関数を定義します。
Excelファイルの情報取得:
xlsfinfo関数でExcelファイルのシート情報を取得します。
初期化:
最大値と最小値の初期化を行います。
各シートのデータ処理:
各シートにループでアクセスし、データを読み込みます。
シート内の最大値と最小値を取得し、全シートの中での最大値と最小値を更新します。
最大値と最小値の丸め込み:
取得した最大値と最小値を10の位で丸め込みます。
グラフ作成:
各シートのデータを基にグラフを作成します。
グラフの軸ラベルや範囲を設定し、画像ファイルとして保存します。
ファイル移動:
作成した画像ファイルを「Graph」フォルダに移動します。
3.結果
4つのグラフが得られフォルダにまとめられました。スケーリングも問題ないと思います。x軸の丸め込みは改善できそうですが。