【问题标题】:Add two charts below each other using windows chart form使用 windows 图表形式在彼此下方添加两个图表
【发布时间】:2016-11-24 13:43:49
【问题描述】:

我可以轻松创建两个单独的图表,但我想将它们添加到一个图表中。一个在上面,另一个在它下面。那我该怎么做呢?

这是我迄今为止尝试过的代码,但它只在顶部绘制了一个图表。

// Chart chart1 = new Chart();
            Chart chart1 = new Chart()
            {
                Width = 500,
                Height = 1000
            };


            chart1.Legends[0].Docking = Docking.Bottom;
            ChartArea chartArea = new ChartArea() { Name = "ChartArea0" };
            //Remove X-axis grid lines
            chartArea.AxisX.MajorGrid.LineWidth = 0;
            //Remove Y-axis grid lines
            chartArea.AxisY.MajorGrid.LineWidth = 0;
            //Chart Area Back Color

            chart1.ChartAreas.Add(chartArea);

            chart1.Palette = ChartColorPalette.SeaGreen;

            // Set title.
            chart1.Titles.Add(" GIS");

            // Add series.
            for (int i = 0; i < seriesEXpArray.Length; i++)
            {
                // Add series.
                Series series = chart1.Series.Add(seriesEXpArray[i]);
                series.ChartArea= "ChartArea0";
                // Add point.
                series.Points.Add(ExppointsArray[i]);
            }

             chartArea = new ChartArea() { Name = "ChartArea1" };
            //Remove X-axis grid lines
            chartArea.AxisX.MajorGrid.LineWidth = 0;
            //Remove Y-axis grid lines
            chartArea.AxisY.MajorGrid.LineWidth = 0;
            //Chart Area Back Color

            chart1.ChartAreas.Add(chartArea);

            // Add series.
            for (int i = 0; i < seriesUserCommenArray.Length; i++)
            {
                // Add series.
                Series series = chart1.Series.Add(seriesUserCommenArray[i]);
                series.ChartArea = "ChartArea1";
                // Add point.
                series.Points.Add(UserCommentpointsArray[i]);
            }

【问题讨论】:

    标签: c# winforms charts


    【解决方案1】:

    很可能您的表单不够大,无法容纳您将Height 设置为的1000 像素..

    将其更改为500 并观察ChartAreas 中的两个Series..

    第二个(和第三个)ChartArea默认位于第一个下方。两者都自动调整大小以显示其所有系列中的所有点。

    添加第四个ChartArea 时,布局会自动更改为 2x2 网格。

    如果您想覆盖ChartAreas 的默认排列,您可以通过设置它们的Positions 来实现。见here for an example

    顺便说一句:要摆脱 MajorGrid 行,imo 写起来会更干净:

    chartArea.AxisX.MajorGrid.Enabled = false;
    

    等等。

    您还可以像这样简化ChartAreasSeries 的创建:

    ChartArea chartArea1 = chart1.ChartAreas.Add("ChartArea1");
    ..
    Series series1 = chart1.Series.Add("S1");
    ..
    

    最后:您确实意识到您正在添加 无数 Series 每个只有 一个 DataPoint?这很不寻常..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-15
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多