【问题标题】:Axes labels in chart using dual Y axes are reversed?使用双 Y 轴的图表中的轴标签是否反转?
【发布时间】:2013-08-01 08:19:40
【问题描述】:

我有一个图表,它显示了相同 DateTime X 值的两个不同 Y 值。我正在使用带有主 Y 轴和辅助 Y 轴的同一图表区域上的样条曲线绘制它们。除了交换 Y 轴标签外,该图似乎工作正常。预期的主要 Y 轴标签位于次轴上,反之亦然。

另外,应该注意的是,图表永远不会显示在屏幕上,它们使用chart.SaveImage 方法保存为文件系统和数据库中的图像文件。

这是图表输出的图像:

这是生成图表的代码:

// create the chart
Chart chart = new Chart();
chart.Size = new Size(width, height);
chart.AntiAliasing = AntiAliasingStyles.All;

string datatype = data[0].DataType;
string datatype2 = data2[0].DataType;
SampleUnit unit = GetSampleUnit(data[0].Unit);
string u = "";
if (unit != null)
{
    u = unit.ShortName;
}
SampleUnit unit2 = GetSampleUnit(data2[0].Unit);
string u2 = "";
if (unit2 != null)
{
    u2 = unit2.ShortName;
}

var chartArea = new ChartArea();
chartArea.AxisX.LabelStyle.Format = "dd MMM\nHH:mm";
chartArea.AxisX.MajorGrid.LineColor = Color.LightGray;
chartArea.AxisY.MajorGrid.LineColor = Color.LightGray;
chartArea.AxisX.LabelStyle.Font = new Font("Calibri", 8);
chartArea.AxisY.LabelStyle.Font = new Font("Calibri", 8);
chartArea.AxisY2.LabelStyle.Font = new Font("Calibri", 8);
chartArea.AxisY2.Enabled = AxisEnabled.True;
chartArea.AxisY2.MajorGrid.Enabled = false;
if (string.IsNullOrEmpty(u))
{
    chartArea.AxisY.Title = datatype;
}
else
{
    chartArea.AxisY.Title = datatype + " (" + u + ")";
}
if (string.IsNullOrEmpty(u2))
{
    chartArea.AxisY2.Title = datatype2;
}
else
{
    chartArea.AxisY2.Title = datatype2 + " (" + u2 + ")";
}
chartArea.AxisY.TitleForeColor = Color.MediumBlue;
chartArea.AxisY2.TitleForeColor = Color.Red;
chart.ChartAreas.Add(chartArea);

var series = new Series();
series.Name = datatype;
series.ChartType = SeriesChartType.Spline;
series.XValueType = ChartValueType.DateTime;
series.YValueType = ChartValueType.Double;
series.YAxisType = AxisType.Primary;
series.Color = Color.MediumBlue;
chart.Series.Add(series); 

var series2 = new Series();
series2.Name = datatype2;
series2.ChartType = SeriesChartType.Spline;
series2.XValueType = ChartValueType.DateTime;
series2.YValueType = ChartValueType.Double;
series.Color = Color.Red;
series.YAxisType = AxisType.Secondary;
chart.Series.Add(series2);

chart.Titles.Add(sensor.Name + " " + char.ToUpper(datatype[0]) + datatype.Substring(1) + " " + char.ToUpper(datatype2[0]) + datatype2.Substring(1));

// bind the datapoints
chart.Series[datatype].Points.DataBindXY(data, "Timestamp", data, "Value");
chart.Series[datatype2].Points.DataBindXY(data2, "Timestamp", data2, "Value");

// draw!
chart.Invalidate();

所以,我有两个问题:

  1. 为什么轴标签会颠倒?
  2. 化妆品:为什么轴标题要放一个条“|”最后而不是右括号“)”?这只是将图表保存为图像的视觉伪影吗?

【问题讨论】:

    标签: c# charts axis-labels


    【解决方案1】:

    你有一个剪切粘贴错字

    改变

    series.Color = Color.Red;
    series.YAxisType = AxisType.Secondary;
    

    series2.Color = Color.Red;
    series2.YAxisType = AxisType.Secondary;
    

    【讨论】:

    • 您说得对,先生。我什至寻找了那个具体的原因。有时你只需要一双额外的眼睛。谢谢。
    • 对第二个美容问题有什么想法吗?
    • 我不知道。我想我以前见过这个,并认为这是 MSChart 中的一个错误。我认为它破坏了) 的字体图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多