Мне нужно сохранить линейную диаграмму в формате .png, может быть, даже в файле .svg. Набор данных (дата, значение) и имеет 1800 значений каждый. Я могу сохранить очень точный .png, но, но основные линии сетки xAxis заполняют всю область диаграммы. Его практично полностью черный. Я использую System. Windows .Forms.DataVisualization.Charting; для создания диаграммы между прочим.
(см. скриншот)
я попытался увеличить интервал xAxis на 100, чтобы отобразить только 18 временных отметок, но все еще все 1800 значений, которые не работал вообще. Кроме того, я попытался добавить дополнительную серию, содержащую только 18 значений, сделать линию прозрачной и сделать видимой только ось x второй серии.
Я также попытался использовать MigraDo c / PDFSharp из NuGet для непосредственного построения диаграммы в файл .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);
}