質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1431閲覧

C# polarchartのX軸について

chinpanpan

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

0クリップ

投稿2021/08/27 06:36

C#のSystem.Windows.Forms.DataVisualization.Chartingのchartに関してです

polarchartの時にデフォルトだと
真上が0度
右が90度
下が180度
一周して360度となっていますが

スタート地点を変えて左0度や右0度にしたり
左周りにしたりすることは出来ないのでしょうか?

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/08/27 06:54

Chart のサンプルは持っていますか? それに以下のコードがありますが、そのあたりの設定ではダメですか? 試したわけではないのでハズレだったらすみません。 for(double angle = 0.0; angle <= 360.0; angle += 10.0) { double yValue = (1.0 + Math.Sin(angle/180.0*Math.PI)) * 10.0; chart1.Series["Series1"].Points.AddXY(angle, yValue); }
chinpanpan

2021/08/27 08:12

サンプルはチェックしました 上記の物はグラフ上にデータを付与する部分のコードなので関係ないようです
guest

回答1

0

ベストアンサー

スタート地点を変えて左0度や右0度にしたり
左周りにしたりすることは出来ないのでしょうか?

元データは変えてはいけないという前提なんですよね?(いじっていいのならラベルを変えればどうにでもなってしまうので)

回転は、IntervalOffset等をあれこれいじっていたらできました。

反対周りは、PolarAxisX.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}

アプリ画像

投稿2021/08/31 10:44

編集2023/07/28 17:22
TN8001

総合スコア9801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chinpanpan

2021/09/01 08:41

おおお、まさにやりたかったことです! 逆回転はあくまで出来たら良いなくらいだったのでこれで大丈夫です 詳細なコードまで本当にありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問