簡體   English   中英

如何從0 X軸開始制作折線圖

[英]How to make line chart start from 0 X-Axis

我創建折線圖,但我想在X軸上顯示從0開始的圖表。 我怎樣才能做到這一點。

我嘗試了一些方法,但仍然沒有得到我想要的東西。

Chart1.ChartAreas[0].AxisX.Interval = 0;

Chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;

Chart1.ChartAreas[0].AxisX.Minimum = 0;

Chart1.ChartAreas[0].AxisX.Crossing = 0;

這就是我現在所做的

在此輸入圖像描述

這就是我要的

在此輸入圖像描述

還有一個,如何在圖表中設置主要和次要單位..?

我的代碼在這里

protected void Page_Load(object sender, EventArgs e)
    {
        System.Drawing.Font axisFont = new System.Drawing.Font("Arial", 8, System.Drawing.FontStyle.Bold);
        System.Drawing.Font titleFont = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);

        Chart1.Width = 600;
        Chart1.Height = 400;
        Chart1.BorderlineColor = System.Drawing.Color.Black;
        Chart1.BorderlineWidth = 1;
        Chart1.BorderlineDashStyle = ChartDashStyle.Solid;

        double[] min = { 60.9, 0, 28.81, 7.27 };
        double[] ave = { 60.9, 0, 28.81, 7.27 };
        double[] max = { 5167.72, 1.27, 4176.16, 2566.59 };


        Chart1.Series["Series1"].ChartArea = "ChartArea1";
        Chart1.Series["Series2"].ChartArea = "ChartArea1";
        Chart1.Series["Series3"].ChartArea = "ChartArea1";

        Chart1.Series["Series1"].Points.AddXY("Step 1-2", max[0]);
        Chart1.Series["Series2"].Points.AddXY("Step 1-2", ave[0]);
        Chart1.Series["Series3"].Points.AddXY("Step 1-2", min[0]);

        Chart1.Series["Series1"].Points.AddXY("Step 2-3", max[1]);
        Chart1.Series["Series2"].Points.AddXY("Step 2-3", ave[1]);
        Chart1.Series["Series3"].Points.AddXY("Step 2-3", min[1]);

        Chart1.Series["Series1"].Points.AddXY("Step 3-4", max[2]);
        Chart1.Series["Series2"].Points.AddXY("Step 3-4", ave[2]);
        Chart1.Series["Series3"].Points.AddXY("Step 3-4", min[2]);

        Chart1.Series["Series1"].Points.AddXY("Step 4-5", max[3]);
        Chart1.Series["Series2"].Points.AddXY("Step 4-5", ave[3]);
        Chart1.Series["Series3"].Points.AddXY("Step 4-5", min[3]);
        String hour1 = "hh";
        Chart1.Titles.Add("Cycle Time : "+hour1);
        Chart1.Titles[0].Font = titleFont;

        Chart1.Series["Series1"].MarkerStyle = System.Web.UI.DataVisualization.Charting.MarkerStyle.Triangle;
        Chart1.Series["Series2"].MarkerStyle = System.Web.UI.DataVisualization.Charting.MarkerStyle.Square;
        Chart1.Series["Series3"].MarkerStyle = System.Web.UI.DataVisualization.Charting.MarkerStyle.Diamond;
        Chart1.Series["Series1"].MarkerSize = 15;
        Chart1.Series["Series2"].MarkerSize = 15;
        Chart1.Series["Series3"].MarkerSize = 15;
        Chart1.Legends.Add("Legend1");


        Chart1.Series["Series1"].LegendText = "Max";
        Chart1.Series["Series2"].LegendText = "Ave";
        Chart1.Series["Series3"].LegendText = "Min";

        Chart1.Series["Series1"].Legend = "Legend1";
        Chart1.Series["Series2"].Legend = "Legend1";
        Chart1.Series["Series3"].Legend = "Legend1";
        Chart1.Series["Series1"].IsVisibleInLegend = true;
        Chart1.Series["Series2"].IsVisibleInLegend = true;
        Chart1.Series["Series3"].IsVisibleInLegend = true;

         //This part I try to make the graph start from 0 in X-axis but not work
        //Chart1.ChartAreas[0].AxisX.Interval = 0;
        //Chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
        //Chart1.ChartAreas[0].AxisX.Minimum = 0;
        //Chart1.ChartAreas[0].AxisX.Crossing = 0;
        //Chart1.ChartAreas[0].AxisX.Minimum = 0;
        //Chart1.ChartAreas[0].Position.Auto = false;


        Chart1.ChartAreas[0].AxisX.TitleFont = axisFont;
        Chart1.ChartAreas[0].AxisY.TitleFont = axisFont;

        Chart1.ChartAreas[0].AxisX.Title = "Step";
        Chart1.ChartAreas[0].AxisY.Title = "Time (" + hour1 + ")";


        Chart1.ChartAreas[0].BackColor = System.Drawing.Color.AliceBlue;
        Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
        Chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.ColorTranslator.FromHtml("#D5E8F5");


    }

我有一個類似的問題,並發現解決方案是將IsMarginVisible標志設置為false:

chart1.ChartAreas[0].AxisX.IsMarginVisible = false;

希望這可以幫助。

Chart控件由他自己決定從哪里開始Axes,更重要的是在哪里結束它們,因為它可能在顯示點時產生問題。

假設您在(-1,0)中有一個點,如果您決定從0開始X軸,圖表控件應該做什么? 顯示從未知開始的系列? 擦除點?

在圖表中,每個點都有2個值,X軸的字符串值和Y軸的雙精度值。

字符串按字母順序存儲在圖表中,它還會檢查某些字符串是否等於(因此您沒有3 *步驟1-3 * s)。

它還給字符串一個位置值,顯然從0開始。

但是什么是0位置值字符串?

答:可能沒有0位置值字符串。

事實上,如果你嘗試類似的東西

        Chart1.Series["Series1"].Points.AddXY(string.Empty, 1.0);
        Chart1.Series["Series2"].Points.AddXY(string.Empty, 2.0);
        Chart1.Series["Series3"].Points.AddXY(string.Empty, 3.0);

圖表控件將自動為名為1的空字符串添加標簽,顯示位置值。

在圖表中設置主要和次要單位的唯一方法是在圖表中添加或刪除數據。

另一種解決方法可能是:

Chart1.Series["SeriesMin"].Points.AddXY(0, max[0]);
Chart1.Series["SeriesAve"].Points.AddXY(0, ave[0]);
Chart1.Series["SeriesMax"].Points.AddXY(0, min[0]);

Chart1.Series["SeriesMin"].Points[0].AxisLabel = "Step 1-2";
Chart1.Series["SeriesAve"].Points[0].AxisLabel = "Step 1-2";
Chart1.Series["SeriesMax"].Points[0].AxisLabel = "Step 1-2";

然后你可以添加所有到目前為止沒有工作的代碼

Chart1.ChartAreas[0].AxisX.Interval = 0;
Chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
Chart1.ChartAreas[0].AxisX.Minimum = 0;
Chart1.ChartAreas[0].AxisX.Crossing = 0;
Chart1.ChartAreas[0].AxisX.Minimum = 0;
//Chart1.ChartAreas[0].Position.Auto = false; //EXCEPT THIS ONE!!

像魅力一樣工作 ,如果你不得不添加更多來自數據庫的數據,那就太無聊了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM