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

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

ただいまの
回答率

90.76%

  • C#

    6574questions

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

チャートコントロールを使ったグラフのデザインについて

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 461

pro-poke5

score 34

こんにちわ
VS2010
C#でWebアプリーケーションを作っています

チャートコントロールを使いグラフを表示させているのですが、
デザインが思い通りにいきません。

             Chart chart = new Chart();
                        chart.Series.Clear();

                        chart = new Chart();
                        chart.Width = 500;
                        chart.Height = 500;

                        Series series = new Series();
                        series.ChartType = SeriesChartType.Line; //グラフ

                        series.XValueMember = "XXmember";
                        series.YValueMembers = "Ydate";

                       series.Color = System.Drawing.Color.Red;
                        series.MarkerSize = 10;

                        chart.Series.Add(series);
                        ChartArea area = new ChartArea();
                        chart.ChartAreas.Add(area);
                        chart.DataSource = ds;

                        divChart.Controls.Add(chart);
                        divChart.DataBind();


X軸Y軸はデータバインドさせているため動的な値になります。(ちなみにY軸は日付)
これを実行すると
X軸の値が1~9こ以内なら画像のように綺麗に表示されます。
こちらは6/15から9日間のデータをとってきたもの。
イメージ説明

ですがX軸の値が10個以上の値になると画像のようにグラフが見切れてしまい、また適当な値でY軸が表示されてしまいます。
こちらは6/15より20日間のデータをとってきたもの。
イメージ説明

さらにどちらもX軸の開始が0地点ではなくずれています。

実現したい事としては、
・X軸の値が10以上でもグラフを見切れさせずに表示させたい。
・X軸の開始の値を(この場合は6/15の値)をX軸の0地点から始まるようにしたい

になります。
またグラフ内の値が大きいと全部のY軸の値を表示させたらみづらくなるため今の自動的に区切られた値になっていてもいいのですが、
この区切る値?を制御することは可能なのでしょうか?

アドバイス等よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

こんにちは。

・Y軸の値が10以上でもグラフを見切れさせずに表示させたい。

X軸Y軸が混乱しているようですが、「データ数が10点を超えた時も見切れないようにしたい」ですね?
しかし、データは全て表示されているのでは? 6月15日から20日目は7月4日です。そして、7月4日のデータは表示されているように見えます。

・Y軸の開始の値を(この場合は6/15の値)をX軸の0地点から始まるようにしたい

お望みの内容は「X軸(横軸)の原点を6月15日にしたい」ではないかと思います。Y軸(縦軸)の0~8については言及ないようですので。

その場合は、ChartAreas[]のAxisX.Minumumに6月15日を設定すれば良い筈です。
ただChartControlは機能が膨大ですし、ドキュメントが貧弱ですから、自力で書くのはたいへんと思います。フォーム・デザイナへChartControlを貼り付けて、そのプロパティ群を見てみることをお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/26 15:36

    回答ありがとうございます。
    XYがぐちゃぐちゃになっていたので修正しました、失礼いたしました。

    ・X軸の値が10以上でもグラフを見切れさせずに表示させたい。
    これですが、値自体は見切れてないのですが、グラフの右端が1つめの画像のように綺麗におさまっていない(見切れたようになっている)のをなんとかしたく思っています。

    ・X軸の開始の値を(この場合は6/15の値)をX軸の0地点から始まるようにしたい
    ありがとうございます。やってみます。

    キャンセル

  • 2017/12/26 15:56

    なるほど。目盛りの位置が嫌なのですね。

    設定が山ほどあってどれを設定するのがベストなのか把握していませんが、私はデザイナーで下記を設定して目盛りについて手動で設定できました。(他のプロパティでも設定できそうな気がします。)
    1. ChartAreas → Axies → X axis → MajorGrid.Interval で目盛り間隔を設定
    2. ChartAreas → Axies → X axis → ScaleView.Posision でX軸の開始
    3. ChartAreas → Axies → X axis → ScaleView.Size で X軸の表示幅

    キャンセル

  • 2017/12/26 17:04

    ありがとうございます。
    色々試したのですが、X軸の表示幅だけがどうしても見切れてしまいます…。
    グラフのサイズを400で指定いるので400にしたりそれ以下、以上と色々試したのですがどうしてもグラフが綺麗になりません。
    何が原因なのでしょうか…。

    キャンセル

  • 2017/12/26 17:46

    ScaleView.Sizeを MajorGrid.Intervalで割り切れるように設定したら、最後の目盛りが表示されると思うのですが。例えば、ScaleView.Sizeが400なら、MajorGrid.Intervalを40などです。
    それでダメなら、ちょっと分かりません。
    ChartControlは設定項目がとにかく多いのでそれらしいプロパティをいろいろと調整されてみて下さい。

    キャンセル

  • 2017/12/28 09:21

    ありがとうございます!うまくできました!

    キャンセル

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    6574questions

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