我尝试在温度测量系统中用C#制作zedgraph绘图仪系统,并成功绘制串行数据图。但方向不是线性的,它意味着较低的温度不会在第一次放置,而是在最后时间放置。这是我的代码:
private void initCurves()
{
PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
PointPairList list3 = new PointPairList();
Samples = 10000;
NoOfCurves = 3;
// Samples = int.Parse(XTextBox.Text);
// NoOfCurves = (int)NoOfDataNumericUpDown.Value;
for (int j = 0; j < NoOfCurves; j++)
{
PointPairList tempppl = new PointPairList();
for (double x = 0; x < Samples; x++)
{
tempppl.Add(x, -1);
}
list1.Add(tempppl);
list2.Add(tempppl);
list3.Add(tempppl);
}
// Generate a red curve with diamond
// symbols, and "Porsche" in the legend
ZedGraphControl1.GraphPane.AddCurve("Thermocouple #1",list1, Color.Red, SymbolType.None);
ZedGraphControl1.GraphPane.AddCurve("Thermocouple #2", list2, Color.Blue, SymbolType.None);
ZedGraphControl1.GraphPane.AddCurve("Thermocouple #3", list3, Color.Brown, SymbolType.None);
// Tell ZedGraph to refigure the
// axes since the data have changed
ZedGraphControl1.AxisChange();
}
private void Form1_Load(object sender, EventArgs e) {
//Array of baud rates
string[] baudrates = {"75", "110", "134", "150", "300", "600", "1200", "1800",
"2400", "4800", "7200", "9600", "14400", "19200", "38400",
"57600", "115200", "128000"};
//Set data source for baud rate combobox
COMBaudComboBox.DataSource = baudrates;
// Set the titles and axis labels
GraphPane myPane = ZedGraphControl1.GraphPane;
//Set title axis labels and font color
myPane.Title.Text = "Temperature vs. Time";
myPane.Title.FontSpec.FontColor = Color.Black;
myPane.XAxis.Title.Text = "Time (Sec)";
myPane.XAxis.Title.FontSpec.FontColor = Color.Black;
myPane.YAxis.Title.Text = "Temperature (Celcius)";
myPane.YAxis.Title.FontSpec.FontColor = Color.Black;
//Fill the chart background with a color gradient
myPane.Fill = new Fill(Color.FromArgb(255, 255, 245), Color.FromArgb(255, 255, 190), 90F);
myPane.Chart.Fill = new Fill(Color.FromArgb(255, 255, 245), Color.FromArgb(255, 255, 190), 90F);
myPane.XAxis.Scale.FontSpec.IsAntiAlias = true;
myPane.YAxis.Scale.FontSpec.IsAntiAlias = true;
//Add grid lines to the plot and make them gray
myPane.XAxis.MajorGrid.IsVisible = true;
myPane.XAxis.MajorGrid.Color = Color.LightGray;
myPane.YAxis.MajorGrid.IsVisible = true;
myPane.YAxis.MajorGrid.Color = Color.LightGray;
//Enable point value tooltips and handle point value event
ZedGraphControl1.IsShowPointValues = true;
ZedGraphControl1.PointValueEvent += new ZedGraphControl.PointValueHandler(PointValueHandler);
//Show the horizontal scroll bar
ZedGraphControl1.IsShowHScrollBar = true;
//Automatically set the scrollable range to cover the data range from the curves
ZedGraphControl1.IsAutoScrollRange = true;
//Add 10% to scale range
ZedGraphControl1.ScrollGrace = 0.1;
//Horizontal pan and zoom allowed
ZedGraphControl1.IsEnableHPan = true;
ZedGraphControl1.IsEnableHZoom = true;
//Vertical pan and zoom not allowed
ZedGraphControl1.IsEnableVPan = false;
ZedGraphControl1.IsEnableVZoom = false;
//Set the initial viewed range
// ZedGraphControl1.GraphPane.XAxis.Scale.MinAuto = true;
// ZedGraphControl1.GraphPane.XAxis.Scale.MaxAuto = true;
//Let Y-Axis range adjust to data range
ZedGraphControl1.GraphPane.IsBoundedRanges = true;
//Set the margins to 10 points
myPane.Margin.All = 10;
//Hide the legend
// myPane.Legend.IsVisible = false;
//Set start point for XAxis scale
myPane.XAxis.Scale.BaseTic = 0;
//Set start point for YAxis scale
myPane.YAxis.Scale.BaseTic = 0;
//Set max/min XAxis range
myPane.XAxis.Scale.Min = 0.0;
// myPane.XAxis.Scale.Max = 7200;
myPane.XAxis.Scale.MinorStep = 5;
myPane.XAxis.Scale.MajorStep = 10;
//Set max/min YAxis range
myPane.YAxis.Scale.Min = 0;
myPane.YAxis.Scale.Max = 400;
myPane.YAxis.Scale.MinorStep = 5;
myPane.YAxis.Scale.MajorStep = 10;
RollingPointPairList list = new RollingPointPairList(7400);
//Initially, a curve is added with no data points (list is empty)
//Color is red, and there will be no symbols
//LineItem curve = myPane.AddCurve("Temperature", list, Color.Red, SymbolType.None);
//Scale the axis
myPane.AxisChange();
// Set defaults for UI
SpeedNumericUpDown.Value = Properties.Settings.Default.SpeedSetting;
NoOfDataNumericUpDown.Value = Properties.Settings.Default.DataSetsSetting;
XTextBox.Text = Properties.Settings.Default.XScaleSetting;
YTextBox.Text = Properties.Settings.Default.YScaleSetting;
SeriesLineSizeNumericUpDown.Value = Properties.Settings.Default.LineSizeSetting;
// Fill COMPortComboBox with available COM ports
string[] aosPorts = SerialPort.GetPortNames();
bool foundCOMPortFlag = false;
COMPortComboBox.DataSource = aosPorts;
foreach (string port in aosPorts) {
if (port == Properties.Settings.Default.COMPortSetting) {
COMPortComboBox.Text = port;
foundCOMPortFlag = true;
}
}
// We didn't find the COM port, so set to COM1
if (foundCOMPortFlag == false) {
COMPortComboBox.SelectedIndex = 0;
}
}
我可以将绘图图形方向更改为线性吗?我怎么能这样做?
感谢您的帮助
问候
Nanang