スタート地点を変えて左0度や右0度にしたり
左周りにしたりすることは出来ないのでしょうか?
元データは変えてはいけないという前提なんですよね?(いじっていいのならラベルを変えればどうにでもなってしまうので)
回転は、IntervalOffset
等をあれこれいじっていたらできました。
反対周りは、Polar
はAxisX.IsReversed = true
が効かないようなので難しそうです。
Axis.IntervalOffset プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs
Axis.Maximum プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs
Axis.Minimum プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs
cs
1using System.Windows.Forms;
2using System.Windows.Forms.DataVisualization.Charting;
3
4namespace Questions356436
5{
6 public partial class Form1 : Form
7 {
8 public Form1()
9 {
10 InitializeComponent();
11
12 var panel = new TableLayoutPanel
13 {
14 Dock = DockStyle.Fill,
15 ColumnCount = 3,
16 };
17 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
18 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
19 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
20 Controls.Add(panel);
21
22
23 var chart1 = new Chart { Dock = DockStyle.Fill, };
24 chart1.Titles.Add(new Title("ノーマル"));
25 chart1.ChartAreas.Add(new ChartArea());
26 chart1.Series.Add(new Series { ChartType = SeriesChartType.Polar, BorderWidth = 3, });
27 panel.Controls.Add(chart1, 0, 0);
28
29 var chart2 = new Chart { Dock = DockStyle.Fill, };
30 chart2.Titles.Add(new Title("右90度回転"));
31 chart2.ChartAreas.Add(new ChartArea());
32 chart2.Series.Add(new Series { ChartType = SeriesChartType.Polar, BorderWidth = 3, });
33 panel.Controls.Add(chart2, 1, 0);
34
35 var chart3 = new Chart { Dock = DockStyle.Fill, };
36 chart3.Titles.Add(new Title("左90度回転"));
37 chart3.ChartAreas.Add(new ChartArea());
38 chart3.Series.Add(new Series { ChartType = SeriesChartType.Polar, BorderWidth = 3, });
39 panel.Controls.Add(chart3, 2, 0);
40
41
42 for (var i = 0; i <= 360; i += 30)
43 {
44 chart1.Series[0].Points.AddXY(i, 10 + i / 30);
45 chart2.Series[0].Points.AddXY(i, 10 + i / 30);
46 chart3.Series[0].Points.AddXY(i, 10 + i / 30);
47 }
48
49 chart2.ChartAreas[0].AxisX.IntervalOffset = -90; // 直感と符号が逆
50 chart2.ChartAreas[0].AxisX.Minimum = -chart2.ChartAreas[0].AxisX.IntervalOffset;
51 chart2.ChartAreas[0].AxisX.Maximum = chart2.ChartAreas[0].AxisX.Minimum + 360;
52
53 chart3.ChartAreas[0].AxisX.IntervalOffset = -270;
54 chart3.ChartAreas[0].AxisX.Minimum = -chart3.ChartAreas[0].AxisX.IntervalOffset;
55 chart3.ChartAreas[0].AxisX.Maximum = chart3.ChartAreas[0].AxisX.Minimum + 360;
56 }
57 }
58}