矢印を描く
Last modified: 2019 年 03 月 21 日 00 時
箱ひげ図の全自動スクリプト。定期テストなどで活躍。KeTpic版の焼き直し。
主な使用関数: Listplot, Letter, Expr.
使い方
hakohige_sample.cdyをダウンロードして、CindyScriptのDraw(figures)
////入力ここから/////////////////////////////////////////////////////////
name=["クラスA", "クラスB", "クラスC"]; //項目名のリスト
title="前期末試験"; //タイトル
Mark=[[17,51.8,70.0,84.3,100,64.9], //最小値, 1/4, 2/4, 3/4, 最大値, 平均値の順
[6,40.0,58.0,77.0,94,56.8],
[6,56.0,71.0,78.5,99,65.6]];
////入力ここまで/////////////////////////////////////////////////////////
Setpen(1);
Setunitlen("16mm");
mult=0.07;
Setscaling(mult);
(略)
の項目名とタイトル、そして、四分位数を入力します。クラス数は2でも、4でも、対応する得点の行列Markが入力されていれば大丈夫です。項目数に応じて、ちゃんと箱ひげ図を作成してくれます。また、平均点を"+"マークに、その横に点数を表示しています。
[このページのトップへ]
サンプルファイルとCindyScriptコード
サンプルファイル(.cdy)のダウンロード
以下はDraw部分のコード:
Ketinit();
////入力ここから/////////////////////////////////////////////////////////
name=["クラスA", "クラスB", "クラスC"]; //項目名のリスト
title="前期末試験"; //タイトル
Mark=[[17,51.8,70.0,84.3,100,64.9], //最小値, 1/4, 2/4, 3/4, 最大値, 平均値の順
[6,40.0,58.0,77.0,94,56.8],
[6,56.0,71.0,78.5,99,65.6]];
////入力ここまで/////////////////////////////////////////////////////////
Setpen(2);
Setunitlen("14mm");
mult=0.07;
Setscaling(mult);
item=length(name);
Letter([item,105],"c",title);
ave=apply(1..(item),x,Mark_(x)_6);
NE.x=2*item+1;
NE.y=100*mult+1;
//箱ひげ
w=0.5;
repeat(item,n,
L=2*n-1;
Listplot("box"+text(n),[[L-w,Mark_(n)_2], [L-w,Mark_(n)_4],
[L+w,Mark_(n)_4], [L+w,Mark_(n)_2], [L-w,Mark_(n)_2]]); //箱
Listplot("center"+text(n),[[L-w,Mark_(n)_3], [L+w,Mark_(n)_3]]); //中央値
Listplot("higeN"+text(n),[[L-w/2,Mark_(n)_1], [L+w/2,Mark_(n)_1]]); //ひげ
Listplot("higeS"+text(n),[[L-w/2,Mark_(n)_5], [L+w/2,Mark_(n)_5]]); //
Listplot("bodyN"+text(n),[[L,Mark_(n)_1], [L,Mark_(n)_2]]); //中心線
Listplot("bodyS"+text(n),[[L,Mark_(n)_4], [L,Mark_(n)_5]]); //
);
//平均値の印
d=1;
dx=d*mult;
dy=d;
repeat(item,n,
L=2*n-1;
Listplot("ave1"+text(n),[[L,Mark_(n)_6-dy],[L,Mark_(n)_6+dy]]);
Listplot("ave2"+text(n),[[L-dx,Mark_(n)_6],[L+dx,Mark_(n)_6]]);
Fontsize("ss");
Expr([L,Mark_(n)_6],"e1.4",text(ave_(n)));
Fontsize("n");
);
//外枠
Listplot("frame",[[0,100],[0,0],[2*item,0],[2*item,100]]);
//目盛り
repeat(11,n,
w=0.8*mult;
Expr([0,10*(n-1)],"w2",text(10*(n-1)));
Expr([2*item,10*(n-1)],"e2",text(10*(n-1)));
Listplot("markL"+text(n),[[-w,10*(n-1)],[w,10*(n-1)]]);
Listplot("markR"+text(n),[[2*item-w,10*(n-1)],[2*item+w,10*(n-1)]]);
);
repeat(item,n,
w=0.8;
Letter([2*n-1,0],"s2",name_(n));
Listplot("markD"+text(n),[[2*n-1,-w],[2*n-1,w]]);
);
Addax(0);
//Figpdf();
Windispg();
//Help("List");
[このページのトップへ]