想達到下圖的效果,主要是Y軸的格式化,x軸為時間,y軸中x為正常范圍,如20,如波動為0.5,1sd就是 20.5,2sd就是21,依次類推,
目前問題,積分不多,望搞過的大佬給指點指點;
1、Y軸本身為各種數值,如何呈現這種效果的
2、X軸用的是日期,年月日這種,如何呈現這種效果;

目前達到的效果:

后臺代碼:
private void LoadForm()
{
chart1.Series.Clear();
ChartHelper.AddSeries(chart1, "折線圖", SeriesChartType.Line, Color.Red, Color.Red);
ChartHelper.SetTitle(chart1, "折線圖", new Font("微軟雅黑", 12), Docking.Bottom, Color.Black);
ChartHelper.SetStyle(chart1, Color.Transparent, Color.White);
ChartHelper.SetLegend(chart1, Docking.Top, StringAlignment.Center, Color.Transparent, Color.Black);
ChartHelper.SetXY(chart1, "日期", "值", StringAlignment.Far, Color.Black, Color.Black, AxisArrowStyle.None, 1, 2);
//網格這是
ChartHelper.SetMajorGrid(chart1, Color.Gray, 1, 0.5, ChartDashStyle.Dash, ChartDashStyle.NotSet);
//標記點設定
chart1.Series[0].MarkerSize = 8;//標記點大小
chart1.Series[0].MarkerStyle = MarkerStyle.Circle; //標記點型別
//提示
chart1.Series[0].ToolTip = "線:#SER\nx: #VALX\ny:#VALY";
//Y軸最大值和最小值
chart1.ChartAreas[0].AxisY.Maximum = 22;
chart1.ChartAreas[0].AxisY.Minimum = 18;
chart1.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.None; //箭頭樣式
//系結值
chart1.Series["折線圖"].Points.DataBind(listDemo.AsEnumerable(), "StartDate", "ValueInt", "");
//設定警戒線
double max = 20;
StripLine stripMax = new StripLine();
//stripMax.Text = string.Format("最大:{0:F}", max);//展示文本
stripMax.Font = new Font("宋體", 20);//文本字體
stripMax.BackColor = Color.FromArgb(208, 109, 106);//背景色
stripMax.Interval = 0;//間隔
stripMax.IntervalOffset = max;//偏移量
stripMax.StripWidth = 0.01;//線寬
// stripMax.ForeColor = Color.White;//前景色
//stripMax.TextAlignment = StringAlignment.Near;//文本對齊方式
//
chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);//添加到ChartAreas中
stripMax = new StripLine();
stripMax.IntervalOffset = max + 0.5;
chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);//添加到ChartAreas中
}
List<Demo> listDemo = new List<Demo>();
private void InitData()
{
List<double> y = new List<double>() { 18.5, 19, 19.5, 20, 20.5, 21, 21.5 };
Random random = new Random();
for (int i = 0; i < 12; i++)
{
Demo demo = new Demo();
int index= random.Next(y.Count());
demo.ValueInt = y[index];
demo.StartDate = DateTime.Now.AddDays(i);
if (i == 3)
{
demo.ValueInt = 1;
}
listDemo.Add(demo);
}
//系結資料
}
uj5u.com熱心網友回復:
這玩意難么,沒大佬給指點指點么uj5u.com熱心網友回復:
你要的曲線圖實際上是多個曲線,好像是8個,其中6個是固定的應該代表最小上、下限,上、下限,最大上下限,還有就是你的帶資料的2條曲線,都是要單獨畫的,你現在才畫了一條線,另外你的3,4點的資料好像隨機的遠了吧,最好除錯下看你的值是多少?uj5u.com熱心網友回復:
那是兩條,大哥,3那個點是我故意設定 的,現在已經能達到這種效果了,但是還是不理想啊
uj5u.com熱心網友回復:
提供兩條資料就是這了,現在要解決的是X軸和Y軸格式化的問題了,哈哈
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/276499.html
標籤:C#
上一篇:C# 給DataGridView的column定制DefaultCellStyle代碼問題
下一篇:求助,讀取dat檔案內容
