急ぎASP.netでレーダーチャートを描く事になった。
sin、cosで計算して描くのかとげんなりしたのだけど、Visual Studio 2013には幸いにもChartコントロールがあったので、事なきを得た。
画面にコントロールを配置して、レーダーチャートを指定、Y軸に表題、X軸に値を指定する。
asp.net
<asp:Chart ID="Chart1" runat="server" Height="400px" Width="400px">
<Series>
<asp:Series Name="Series1" ChartType="Radar" XValueMember="subject" YValueMembers="point">\</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1"></asp:ChartArea>
</ChartAreas>
</asp:Chart>
ソースコードはこんな感じ
c#
dt.Columns.Add("subject", Type.GetType("System.String"));
dt.Columns.Add("point", Type.GetType("System.Int32"));
String[] titles;
titles = new String[4] { "国語", "算\n数",
"理科", "社\n会"};
Int32[] points;
points = new Int32[4] { 5, 3, 3, 1 };
for (Int32 i = 0; i < 4; i++)
{
DataRow row = dt.NewRow();
row["subject"] = titles[i];
row["point"] = points[i];
dt.Rows.Add(row);
}
Chart1.ChartAreas[0].AxisX.IsReversed = true;
Chart1.ChartAreas[0].AxisY.Maximum = 5; //最大値指定
Chart1.ChartAreas[0].AxisY.IsStartedFromZero = true;
Chart1.DataSource = dt;
Chart1.DataBind();
開発環境では発生しなかったのだけど、サーバに配置すると、TempImageFiles フォルダがないとか言われた。
チャートは画像として生成されるのだけれど、その出力先がないとの事なので、
Web.Configの
<add key="ChartImageHandler" value="storage=file;timeout=20;dir= c:\TempImageFiles\ ;" />
上記dir=以下を書き込み可能なフォルダに修正して解決。