none
Chartで折れ線グラフ表示時のヌル(空データ)が途切れた状態で表示してしまう。 RRS feed

  • 質問

  • お世話になります。C#でWindowsアプリを作成しています。

    Chartで折れ線グラフを表示させています。この時ヌルデータも含まれているため表示させていますが、線が途切れています。

    chart1.Series[columnName]["EmptyPointValue"] = "average";       // **

     chart1.Series[columnName].EmptyPointStyle.BorderWidth = 1;
     chart1.Series[columnName].EmptyPointStyle.MarkerColor = Color.FromArgb(0, 192, 0);
     chart1.Series[columnName].EmptyPointStyle.SetCustomProperty("EmptyPointValue", "average");    // **
     chart1.Series[columnName].EmptyPointStyle.BorderDashStyle = ChartDashStyle.Dash;

    など**印部分を試しましたが何ら変わりません。下記がその部分のコードです。開発環境は、Windows7 VS2010 C# Winアプリです。途切れさせず、指定した色などで繋げてほしい!

    private void DysDB(){
                // 初期化
                chart1.Series.Clear();

                // データの取得
                DataSet ds = GetData();

                // Chartコントロールにデータソースを設定
                chart1.DataSource = ds;

                // Chartコントロールにタイトルを設定
                chart1.Titles.Add("アクセス数とユニークユーザー数");

                MarkerStyle[] mark = new MarkerStyle[5];
                mark[0] = MarkerStyle.Star5;
                mark[1] = MarkerStyle.Triangle;
                mark[2] = MarkerStyle.Cross;
                mark[3] = MarkerStyle.Circle;
                mark[4] = MarkerStyle.None;

                // グラフの種類,系列,軸の設定
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
                    // 列名の取得
                    string columnName = ds.Tables[0].Columns[i].ColumnName;

                    // 系列の設定
                    chart1.Series.Add(columnName);

                    // ★★★グラフの種類を折れ線グラフにする★★★
                    chart1.Series[columnName].ChartType = SeriesChartType.Line;
                    //chart1.Series[columnName].ChartType = SeriesChartType.Line;
                    chart1.Series[columnName].MarkerColor = Color.Red;
                    chart1.Series[columnName].MarkerSize = 10;
                    chart1.Series[columnName].MarkerStyle = mark[i];
                    chart1.Series[columnName]["EmptyPointValue"] = "average";

                    chart1.Series[columnName].EmptyPointStyle.BorderWidth = 1;
                    chart1.Series[columnName].EmptyPointStyle.MarkerColor = Color.FromArgb(0, 192, 0);
                    //chart1.Series[columnName].EmptyPointStyle.BorderDashStyle = ChartDashStyle.DashDotDot;
                    //chart1.Series[columnName].EmptyPointStyle.SetCustomProperty("EmptyPointValue", "average");
                    chart1.Series[columnName].EmptyPointStyle.BorderDashStyle = ChartDashStyle.Dash;
                    chart1.Series[columnName].EmptyPointStyle.BorderColor = Color.Green;

                    // X軸
                    chart1.Series[columnName].XValueMember = ds.Tables[0].Columns[0].ColumnName.ToString();
                    chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
                    chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false;

                    // Y軸
                    chart1.Series[columnName].YValueMembers = columnName;
                }

                // X軸タイトル
                chart1.ChartAreas[0].AxisX.Title = "月";
                //chart1.DataBind();
            }

            private DataSet GetData()
            {
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                DataRow dtRow;

                // 列の作成
                dt.Columns.Add("月", Type.GetType("System.String"));
                dt.Columns.Add("アクセス数", Type.GetType("System.Int32"));
                dt.Columns.Add("ユニークユーザー数", Type.GetType("System.Int32"));
                ds.Tables.Add(dt);

                // データの追加
                dtRow = ds.Tables[0].NewRow();
                dtRow[0] = "2011/01";
                dtRow[1] = "945";
                dtRow[2] = "2430";
                ds.Tables[0].Rows.Add(dtRow);

                dtRow = ds.Tables[0].NewRow();
                dtRow[0] = "2011/02";
                //dtRow[1] = DBNull.Value;     // "1023";
                dtRow[2] = "1860";
                ds.Tables[0].Rows.Add(dtRow);

                dtRow = ds.Tables[0].NewRow();
                dtRow[0] = "2011/03";
                dtRow[1] = "2121";
                dtRow[2] = "1750";
                ds.Tables[0].Rows.Add(dtRow);
                dtRow = ds.Tables[0].NewRow();

                dtRow[0] = "2011/04";
                dtRow[1] = "2179";
                dtRow[2] = "1320";
                ds.Tables[0].Rows.Add(dtRow);
                dtRow = ds.Tables[0].NewRow();

                dtRow[0] = "2011/05";
                dtRow[1] = "2063";
                //dtRow[2] = DBNull.Value;     // "720";
                ds.Tables[0].Rows.Add(dtRow);
                dtRow = ds.Tables[0].NewRow();

                dtRow[0] = "2011/06";
                dtRow[1] = "2107";
                dtRow[2] = "945";
                ds.Tables[0].Rows.Add(dtRow);
               
                return ds;
            }


    • 編集済み ferret001 2015年1月8日 6:42
    2015年1月8日 6:41

回答

すべての返信