首页 > 解决方案 > 具有不同值计数的 Mchart 多个系列(更改 xAxis 间隔)

问题描述

我需要将 Linechart 保存为 .png,甚至可能是 .svg 文件。一个 Dataset(date, value),每个有 1800 个值。我能够保存一个非常准确的 .png,但是,xAxis 的 majorGridLines 填充了整个图表区域。它的实用完全黑色。我正在使用 System.Windows.Forms.DataVisualization.Charting;顺便说一句,创建图表。

(见截图)

我试图将 xAxis 间隔增加 100 以仅显示 18 个时间戳,但仍然是所有 1800 个值,这根本不起作用。此外,我尝试添加一个仅包含 18 个值的附加系列,使线条透明并且仅使第二个系列的 x 轴可见。
我还尝试使用 NuGet 中的 MigraDoc / PDFSharp 将图表直接构建为 .pdf 文件。我也没有找到办法在那里做。还是我做错了什么可怕的事情?

我希望你们中的任何人都知道我在说什么!

public void createWinfromChart()
        {
            int cnt = 0;
            foreach (KeyValuePair<string, Data> keyValue in obj)
            {
                chart1      = new Chart();
                chart1.Size = new Size(1000, 1000);
                addNewSeries(keyValue.Value.simplifyOutput(), keyValue.Key);
                cnt++;
                saveChartImage(cnt);
            }
        }
public void addNewSeries(Dictionary<string, float> dictionary, string tag)
        {
            ChartArea chartArea = new ChartArea();
            chart1.ChartAreas.Add(chartArea);

            //xAchse
            chart1.ChartAreas[0].Axes[0].MajorGrid.Enabled = false;
            //yAchse
            chart1.ChartAreas[0].Axes[1].MajorGrid.Enabled = false;
            chart1.ChartAreas[0].AxisX.Interval            = 100;

            Series series = new Series();

            //Series style
            series.ChartType       = SeriesChartType.Line;
            series.BorderWidth     = 2;
            series.Color           = Color.Green;
            series.IsXValueIndexed = false;

            foreach (float values in obj[tag].value)
            {
                series.Points.AddY(values);
            }

            chart1.Series.Add(series);
            ChartArea chartArea2 = new ChartArea();
            chart1.ChartAreas.Add(chartArea2);
            chart1.ChartAreas[1].Axes[0].MajorGrid.Enabled = true;
            chart1.ChartAreas[1].Axes[1].MajorGrid.Enabled = true;

            Series series2 = new Series();
            series2.ChartType       = SeriesChartType.Line;
            series2.BorderWidth     = 0;
            series2.Color           = Color.Transparent;
            series2.IsXValueIndexed = false;

            foreach (KeyValuePair<string, float> valuePair in dictionary)
            {
                series2.Points.AddXY(valuePair.Key, 0);
            }

            chart1.Series.Add(series2);
        }

标签: c#.netchartspdfsharpmigradoc

解决方案


推荐阅读