2013-07-31 164 views
1

我有一個圖表顯示相同的DateTime X值的兩個不同的Y值。我使用Spline在主Y軸和輔助Y軸的相同圖表區域上繪製它們。除了Y軸標籤被交換之外,該圖似乎可以正常工作。預期的主Y軸標籤位於次軸上,反之亦然。使用雙Y軸的圖表中的軸標籤是否反轉?

另外,應該注意的是,圖表從不顯示在屏幕上,它們被保存爲文件系統中的圖像文件和使用chart.SaveImage方法的數據庫中。

這裏是圖表的輸出的一個圖像:

Dual Y-Axis Chart

這裏是生成圖表的代碼:

// 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. 化妝品:爲什麼軸標題放一個「|」在最後而不是右括號「)」?這只是將圖表保存爲圖像的視覺工件嗎?

回答

2

你有一個切正貼錯字

變化

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

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

你是正確的,先生。我甚至找到了具體的原因。有時你只需要一雙額外的眼睛。謝謝。 – Psyfun

+0

關於第二個美容問題的任何想法? – Psyfun

+0

我不知道。我想我以前看過這個,並認爲這是MSChart中的一個錯誤。我*認爲*它正在破壞')'的字體圖像。 –