Matlabは柱状図と折れ線図の暗い技巧を描きます


Matlabには強力な描画機能があり、基本的な使い方はヘルプドキュメントを参照するだけで十分です.しかし、カスタマイズされた機能の中には、ヘルプドキュメントで簡単に調べられるとは限らない、あるいは隠し(暗い)隠し(黒い)テクニックがあります.まずbarplot(柱状図)を描くとき、戸惑うかもしれないいくつかの面倒を見てみましょう.私たちは主にサンプルコードを通じて次の4つの機能(ラベルを付ける方法はtrickyを比較する)を実現し、最終的に描いた効果図は以下の図に示します.
1)柱状図の各柱に異なる色(異なるカテゴリを表す)を設定し、図例を添付する.
2)各柱に表示される数値をラベル形式で柱に追加し、文字の方向を垂直に設定する.
3)他の横座標と縦座標を設定するテクニック;
4)グラフの背景を白にする.
5)文字列の接続方法に注意する.
上記の機能を単独で実現する方法は実に多いが,すべての機能を同時に実現する方法はかなり困難であり,主に多くのタスクが全自動で実現しにくい(人工符号化介入の成分が大きい)ことが多い.次のようなリファレンスを提供します.
figure1 = figure('Color',[1 1 1]);

p1X = [1]; p1Y = [0.067];
p2X = [2]; p2Y = [0.177];
p3X = [3]; p3Y = [0.067];
p4X = [4]; p4Y = [0.096];

p1 = bar(p1X,p1Y);
hold on;
p2 = bar(p2X,p2Y);
hold on;
p3 = bar(p3X,p3Y);
hold on;
p4 = bar(p4X,p4Y);

%           

set(p1,'FaceColor','red');
set(p2,'FaceColor','blue');
set(p3,'FaceColor','m');
set(p4,'FaceColor','g');

%          (       )

txt1 = text(p1X, p1Y+0.01, strcat(num2str(p1Y*100),'%'), 'rotation', 90);
txt2 = text(p2X, p2Y+0.01, strcat(num2str(p2Y*100),'%'), 'rotation', 90);
txt3 = text(p3X, p3Y+0.01, strcat(num2str(p3Y*100),'%'), 'rotation', 90);
txt4 = text(p4X, p4Y+0.01, strcat(num2str(p4Y*100),'%'), 'rotation', 90);
set(txt1, 'fontsize', 20);
set(txt2, 'fontsize', 20);
set(txt3, 'fontsize', 20);
set(txt4, 'fontsize', 20);

ylim([0, 0.24]);

ylabel( 'RR' );
set(gca,'XTickLabel',{})
set(gca,'fontsize',24);

set(gca, 'YTick',[0, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24])
set(gca, 'YTicklabel',{'0%','4%','8%','12%', '16%','20%','24%'});

%    
legend1=legend('RF-MinVar','MaxDom','MinVar','Area-Greedy', 'location','northeast');
set(legend1,'FontSize',20);
set(legend1,'box','off');

次に、Matlabを使用して折れ線図を描くテクニックについて説明します.
1)折れ線の中のMarkerの形式と大きさ、折れ線の線形と太さを設定する.
2)横長座標のラベルを設定する(べき乗を書くためにTeX構文を使用することに注意).
3)横長座標の値範囲を設定する.
4)設定例の形式及び位置等;
5)Matlabにおける継続符号は「...」であることに注意する.
k_st = 10:3:34;

max_ces_st = [0.251014, 0.251014, 0.089194, 0.089194, ...
0.089194, 0.089194, 0.089194, 0.000014, 0.000014];

min_ces_st = [0.002519, 0.002519, 0.002519, 0.002519, ...
0.001307, 0.001307, 0.001307, 0.001307, 0.001307];

rf_ces_st = [0.002519, 0.001307, 0.001307, 0.001307, ...
0.001062, 0.001062, 0.001062, 0.000001, 0.000001];

area_ces_st = [0.010109, 0.010109, 0.010109, 0.010109, 0.010109, ...
0.008745, 0.008745, 0.006179, 0.001982];

figure1=figure('Color',[1 1 1]);

semilogy(k_st, rf_ces_st, 'r-o', ...
	k_st, min_ces_st, 'b-v', ...
	k_st, max_ces_st,'g-*', ...
	k_st, area_ces_st,'m-+','Markersize', 24,'linewidth',2);

xlabel('k','FontSize',36);
ylabel('RR','FontSize',36);
xlim([10, 34]);
ylim([1e-6, 1]);
set(gca,'fontsize',30);

set(gca, 'XTick',[10,13,16,19,22,25,28,31,34]);
set(gca, 'YTick',[1e-6,1e-4,1e-2,1]);
set(gca, 'XTicklabel',{'10','13','16','19','22','25','28', '31','34'});
set(gca, 'YTicklabel',{'0^{ }','10^{-4}','10^{-2}', '10^{0}'});

legend1=legend('RF-MinVar','MinVar','MaxDom','Area-Greedy', 'location','southwest');
set(legend1,'FontSize',24);
set(legend1,'box','off');

上記のコードを実行した結果は次のとおりです.
(本文完)