如图所示,本人初学c#原想做一个随时间动态更新,画面不断左移的折线图:
目前的情况:每当x轴坐标挤到原点时,y轴被挤压缩短;因为x轴最值长度是坐标间距的整数倍,当x轴坐标挤到原点时,x轴多显示1个坐标,x轴被挤压缩短。经过原点后,x、y轴又被拉伸到原尺寸。
请问:如何在不取消显示x轴坐标的情况下,使得折线图不会因为x轴坐标的左移过程被挤压变形?
//初始load部分
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "hh:mm:ss.ff";
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Milliseconds;
chart1.ChartAreas[0].AxisX.MajorGrid.IntervalType = DateTimeIntervalType.Milliseconds;
//Timer部分
chart1.ChartAreas[0].AxisX.Minimum = DateTime.Now.AddSeconds(-5).ToOADate();
chart1.ChartAreas[0].AxisX.Maximum = DateTime.Now.ToOADate();
chart1.ChartAreas[0].AxisX.Interval = 500;
chart1.Series[0].Points.AddXY(DateTime.Now.ToOADate(), Convert.ToDouble(Temperature));
提前谢谢!
结合定时器就可以,类似如下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace DynamicGraph
{
public partial class Form1 : Form
{
DateTime dt_begin;
DateTime dt_now;
public Form1()
{
InitializeComponent();
InitChart();
dt_begin = System.DateTime.Now;
}
Queue<int> Q1 = new Queue<int>();
public void InitChart()
{
Series series = chart1.Series[0];
// 画样条曲线(Spline)
series.ChartType = SeriesChartType.Spline;
// 线宽2个像素
series.BorderWidth = 2;
// 线的颜色:红色
series.Color = System.Drawing.Color.Red;
// 图示上的文字
series.IsVisibleInLegend = false; //隐藏图示上的文字
// 设置显示范围
ChartArea chartArea = chart1.ChartAreas[0];
chartArea.AxisX.Minimum = 1;
chartArea.AxisX.Maximum = 100;
chartArea.AxisY.Minimum = 0d;
chartArea.AxisY.Maximum = 100d;
}
Random r = new Random();
int temp;
public void Draw()
{
this.chart1.Series[0].Points.Clear();
temp = r.Next(0, 100);
Q1.Enqueue(temp);
if (Q1.Count > 100)
Q1.Dequeue();
for (int i = 0; i < Q1.Count; i++)
{
chart1.Series[0].Points.AddY(Q1.ElementAt(i));
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
TimeSpan ts;
private void timer1_Tick(object sender, EventArgs e)
{
Draw();
dt_now = System.DateTime.Now;
ts = (dt_now - dt_begin);
label2.Text = "系统运行时长:" + ts.Days + " 天 " +
ts.Hours + " 小时 " + ts.Minutes + " 分钟 " + ts.Seconds + " 秒";
label1.Text = dt_now.ToString();
}
}
}
https://download.csdn.net/download/weixin_43074474/12270566
这个可能是x轴文本越出编辑导致的,尝试隐藏x轴文本先看下会不会出现问题
我也想做这个类型的曲线
你的问题解决了没有?我也遇到同样的问题了。