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

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

新規登録して質問してみよう
ただいま回答率
85.46%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

5020閲覧

Visual StudioのChartでy軸2軸のグラフの作成で、それぞれのY軸で罫線の数に違いがでる

CCraida

総合スコア6

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/11/24 11:37

編集2021/11/25 08:14

前提・実現したいこと

VisualStudioで「Windowsフォームアプリケーション(.NET Framework)」の開発を行ってます。

VisualStudioのchartを使いy軸2軸のグラフの作成を行ったのですが、
一つ目のY軸、二つ目のY軸に与える値が違う場合、添付の画像のように一つ目と二つ目で罫線の数に違いができてしまいます。

それぞれの罫線の数を同じにして表示する方法があればご教示をお願いします。

イメージ説明

補足情報(FW/ツールのバージョンなど)

visualstudio 2019
C#

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/11/24 22:12

> VisualStudioのchartを使い 質問にある「リンク内容」を見ると Microsoft の Chart コントロールではなくて、グレープシティ社製の True WinChart for .NET という製品の話ですがそうなんですか? もし、リンク先が間違っていて、Microsoft の Chart の話であれば訂正してください。
CCraida

2021/11/25 08:15

すいません。Microsoft の Chart での質問です。 リンクを削除し、画像ファイルを追加しました。
退会済みユーザー

退会済みユーザー

2021/11/25 09:16

どういうコードを書いたのか、簡単なサンプルで良いので問題を再現できるコードを提示した方がレスが付きやすいと思います。
guest

回答1

0

ベストアンサー

ChartArea.AxisY プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs

ChartArea.AxisY2 プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs

Axis.Interval プロパティ (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs

これが知りたかったってことでしょうか?
しかし画像のような状態にするには、AxisY.Maximumをいじってますよね?(この画像もどこかから借りてきてる??)

特に何もしなければ左の軸の最大値が40になっていい感じに調整してくれましたが、あくまで最大値は変えたくないということでしょうか?

となるとIntervalをいじって、どちらかに合わすしかないですよね?
きれいに割り切れない場合は、当然MaximumMinimumをいじるしかないですね(ラベルが3.3333とかじゃイヤすぎますし^^;

  1. Chart1 できるだけ画像に合わせた場合
  2. Chart2 これといって何もしなかった場合
  3. Chart3 左の軸を右に合わせた場合
  4. Chart4 右の軸を左に合わせた場合

cs

1using System.Drawing; 2using System.Windows.Forms; 3using System.Windows.Forms.DataVisualization.Charting; 4 5namespace Questions370834 6{ 7 public partial class Form1 : Form 8 { 9 public Form1() 10 { 11 InitializeComponent(); 12 13 Chart1(); 14 Chart2(); 15 Chart3(); 16 Chart4(); 17 } 18 19 private void Chart1() 20 { 21 chart1.Titles.Add("Chart1"); 22 chart1.Series.Clear(); 23 24 var series1 = new Series 25 { 26 BorderWidth = 2, 27 ChartType = SeriesChartType.StepLine, 28 Color = Color.Cyan, 29 IsVisibleInLegend = false, 30 }; 31 var series2 = new Series 32 { 33 ChartType = SeriesChartType.Column, 34 Color = Color.Red, 35 IsVisibleInLegend = false, 36 YAxisType = AxisType.Secondary, 37 }; 38 39 for (var i = 0; i < 15; i++) 40 { 41 series1.Points.Add(new DataPoint(i, 2.5 * (i + 1))); 42 series2.Points.Add(new DataPoint(i, 1.25 * (i + 1))); 43 } 44 45 chart1.ChartAreas[0].AxisX.Interval = 5; 46 chart1.ChartAreas[0].AxisY.Maximum = 50; // わざとこうしないと提示画像のようにならない 47 48 chart1.Series.Add(series2); 49 chart1.Series.Add(series1); 50 } 51 52 private void Chart2() 53 { 54 chart2.Titles.Add("Chart2"); 55 chart2.Series.Clear(); 56 57 var series1 = new Series 58 { 59 BorderWidth = 2, 60 ChartType = SeriesChartType.StepLine, 61 Color = Color.Cyan, 62 IsVisibleInLegend = false, 63 }; 64 var series2 = new Series 65 { 66 ChartType = SeriesChartType.Column, 67 Color = Color.Red, 68 IsVisibleInLegend = false, 69 YAxisType = AxisType.Secondary, 70 }; 71 72 for (var i = 0; i < 15; i++) 73 { 74 series1.Points.Add(new DataPoint(i, 2.5 * (i + 1))); 75 series2.Points.Add(new DataPoint(i, 1.25 * (i + 1))); 76 } 77 78 chart2.ChartAreas[0].AxisX.Interval = 5; 79 //chart2.ChartAreas[0].AxisY.Maximum = 50; 80 81 chart2.Series.Add(series2); 82 chart2.Series.Add(series1); 83 } 84 85 private void Chart3() 86 { 87 chart3.Titles.Add("Chart3"); 88 chart3.Series.Clear(); 89 90 var series1 = new Series 91 { 92 BorderWidth = 2, 93 ChartType = SeriesChartType.StepLine, 94 Color = Color.Cyan, 95 IsVisibleInLegend = false, 96 }; 97 var series2 = new Series 98 { 99 ChartType = SeriesChartType.Column, 100 Color = Color.Red, 101 IsVisibleInLegend = false, 102 YAxisType = AxisType.Secondary, 103 }; 104 105 for (var i = 0; i < 15; i++) 106 { 107 series1.Points.Add(new DataPoint(i, 2.5 * (i + 1))); 108 series2.Points.Add(new DataPoint(i, 1.25 * (i + 1))); 109 } 110 111 chart3.ChartAreas[0].AxisX.Interval = 5; 112 chart3.ChartAreas[0].AxisY.Interval = 12.5; 113 chart3.ChartAreas[0].AxisY.Maximum = 50; 114 115 chart3.Series.Add(series2); 116 chart3.Series.Add(series1); 117 } 118 119 private void Chart4() 120 { 121 chart4.Titles.Add("Chart4"); 122 chart4.Series.Clear(); 123 124 var series1 = new Series 125 { 126 BorderWidth = 2, 127 ChartType = SeriesChartType.StepLine, 128 Color = Color.Cyan, 129 IsVisibleInLegend = false, 130 }; 131 var series2 = new Series 132 { 133 ChartType = SeriesChartType.Column, 134 Color = Color.Red, 135 IsVisibleInLegend = false, 136 YAxisType = AxisType.Secondary, 137 }; 138 139 for (var i = 0; i < 15; i++) 140 { 141 series1.Points.Add(new DataPoint(i, 2.5 * (i + 1))); 142 series2.Points.Add(new DataPoint(i, 1.25 * (i + 1))); 143 } 144 145 chart4.ChartAreas[0].AxisX.Interval = 5; 146 chart4.ChartAreas[0].AxisY.Maximum = 50; 147 chart4.ChartAreas[0].AxisY2.Interval = 4; 148 149 chart4.Series.Add(series2); 150 chart4.Series.Add(series1); 151 } 152 } 153}

アプリ画像

投稿2021/11/25 21:02

編集2023/07/29 09:35
TN8001

総合スコア9405

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問