{"id":302,"date":"2017-12-27T12:11:36","date_gmt":"2017-12-27T12:11:36","guid":{"rendered":"https:\/\/ibex.tech\/csharp\/?p=302"},"modified":"2022-02-17T06:24:14","modified_gmt":"2022-02-17T06:24:14","slug":"creating-a-chart-with-2-y-axis","status":"publish","type":"post","link":"https:\/\/ibex.tech\/csharp\/c-sharp\/charts\/examples\/creating-a-chart-with-2-y-axis","title":{"rendered":"Creating A Chart With 2 Y Axis"},"content":{"rendered":"<p>\n\t&nbsp;\n<\/p>\n<pre>\r\n<code>\r\n\t\/\/--------------------------------\r\n\t\/\/----- DO CHART BASIC SETUP -----\r\n\t\/\/--------------------------------\r\n\tSystem.Windows.Forms.DataVisualization.Charting.ChartArea  chartArea1 = (new System.Windows.Forms.DataVisualization.Charting.ChartArea());\r\n\tSystem.Windows.Forms.DataVisualization.Charting.Legend  legend1 = (new System.Windows.Forms.DataVisualization.Charting.Legend());\r\n\r\n\tchartArea1.AxisX.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9);\r\n\tchartArea1.AxisY.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9);\r\n\tchartArea1.AxisY2.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9);\r\n\r\n\t\/\/----- SETUP X AXIS (TIME) -----\r\n\tchartArea1.AxisX.Title = &quot;Secs&quot;;\r\n\tchartArea1.AxisX.Minimum = 0;\r\n\tchartArea1.AxisX.Maximum = (ApMain.GRAPHS_BUFFER_LOG_EVERY_SECS * ApMain.GRAPHS_BUFFER_LENGTH);\r\n\tchartArea1.AxisX.Interval = 60;\t\t\t\t\t\/\/Axis marker every #\r\n\tchartArea1.AxisX.LabelStyle.Interval = 300;\t\t\/\/Label the axis every #\r\n\tchartArea1.AxisX.MajorGrid.Interval = 60;\t\t\/\/Grid line every #\r\n\tchartArea1.AxisX.MinorGrid.Interval = ApMain.GRAPHS_BUFFER_LOG_EVERY_SECS;\r\n\t\/\/chartArea1.AxisX.MajorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\t\/\/chartArea1.AxisX.MinorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\r\n\r\n\t\/\/----- SETUP Y (RIGHT) AXIS (TEMPERATURE) -----\r\n\tchartArea1.AxisY.Title = &quot;Temperature (C)&quot;;\r\n\tchartArea1.AxisY.TextOrientation = System.Windows.Forms.DataVisualization.Charting.TextOrientation.Rotated270;\r\n\tchartArea1.AxisY.Minimum = 0;\r\n\tchartArea1.AxisY.Maximum = 100;\r\n\tchartArea1.AxisY.Interval = 10;\t\t\t\t\t\/\/Axis marker every #\r\n\tchartArea1.AxisY.LabelStyle.Interval = 10;\t\t\/\/Label the axis every #\r\n\tchartArea1.AxisY.MajorGrid.Interval = 5;\t\t\/\/Grid line every #\r\n\tchartArea1.AxisY.MinorGrid.Interval = 1;\r\n\tchartArea1.AxisY.MajorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\tchartArea1.AxisY.MinorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\r\n\r\n\r\n\t\/\/----- SETUP Y2 (LEFT) AXIS (POWER) -----\r\n\tchartArea1.AxisY2.Title = &quot;Power (W)&quot;;\r\n\tchartArea1.AxisY2.TextOrientation = System.Windows.Forms.DataVisualization.Charting.TextOrientation.Rotated270;\r\n\tchartArea1.AxisY2.Minimum = 0;\r\n\tchartArea1.AxisY2.Maximum = 2500;\r\n\tchartArea1.AxisY2.Interval = 100;\t\t\t\t\/\/Axis marker every #\r\n\tchartArea1.AxisY2.LabelStyle.Interval = 100;\t\/\/Label the axis every #\r\n\tchartArea1.AxisY2.MajorGrid.Interval = 100;\t\t\/\/Grid line every #\r\n\tchartArea1.AxisY2.MinorGrid.Interval = 10;\r\n\r\n\tchartArea1.AxisY2.MajorGrid.Enabled = false;\t\/\/Hide the grid lines across the chart area\r\n\t\/\/chartArea1.AxisY2.MajorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\t\/\/chartArea1.AxisY2.MinorGrid.LineColor = System.Drawing.Color.DarkGray;\r\n\r\n\r\n\t\/\/-----------------------------------\r\n\t\/\/----- RECREATE THE CHART AREA -----\r\n\t\/\/-----------------------------------\r\n\tChart1.ChartAreas.RemoveAt(0);\r\n\tchartArea1.Name = &quot;ChartArea1&quot;;\r\n\tChart1.ChartAreas.Add(chartArea1);\r\n\r\n\tChart1.Legends.RemoveAt(0);\r\n\tlegend1.Name = &quot;Legend1&quot;;\r\n\tChart1.Legends.Add(legend1);\r\n\r\n\t\/\/Chart1.Text = L&quot;chart1&quot;;\r\n\r\n\twhile (Chart1.Series.Count &gt; 0)\r\n\t\tChart1.Series.RemoveAt(0);\r\n\r\n\r\n\r\n\t\/\/Draw 3 temperature lines\r\n\tint LineCount;\r\n\tfor (LineCount = 0; LineCount &lt; 3; LineCount++)     \/\/Lets draw multiple lines\r\n\t{\r\n\t\t\/\/----- ADD SERIES -----\r\n\t\tint Count;\r\n\t\tint[] ValuesX = new int[1000];\r\n\t\tdouble[] ValuesY = new double[1000];\r\n\t\tfor (Count = 0; Count &lt; 1000; Count++)\r\n\t\t{\r\n\t\t\tValuesX[Count] = Count;\r\n\t\t\tValuesY[Count] = (Count \/ 10) + (LineCount * 10) + 0.5;\r\n\t\t}\r\n\t\tSystem.Windows.Forms.DataVisualization.Charting.Series ChartSeries1 = (new System.Windows.Forms.DataVisualization.Charting.Series());\r\n\t\tChartSeries1.ChartArea = &quot;ChartArea1&quot;;\r\n\t\tChartSeries1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;\r\n\t\tChartSeries1.YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Primary;      \/\/&lt;Select primary Axis Y\r\n\t\tChartSeries1.Legend = &quot;Legend1&quot;;\r\n\t\tChartSeries1.Name = &quot;Temperature &quot; + LineCount;\r\n\t\tChartSeries1.Points.DataBindXY(ValuesX, ValuesY);\r\n\t\tthis.Chart1.Series.Add(ChartSeries1);\r\n\t}\r\n\r\n\t\t\t\t\r\n\t\/\/Draw 1 power line (could also have multiple of these if we wanted)\r\n\tint Count2;\r\n\tint[] ValuesX2 = new int[1000];\r\n\tdouble[] ValuesY2 = new double[1000];\r\n\tfor (Count2 = 0; Count2 &lt; 1000; Count2++)\r\n\t{\r\n\t\tValuesX2[Count2] = Count2;\r\n\t\tValuesY2[Count2] = Count2 * 2;\r\n\t}\r\n\tSystem.Windows.Forms.DataVisualization.Charting.Series ChartSeries2 = (new System.Windows.Forms.DataVisualization.Charting.Series());\r\n\tChartSeries2.ChartArea = &quot;ChartArea1&quot;;\r\n\tChartSeries2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;\r\n\tChartSeries2.YAxisType = System.Windows.Forms.DataVisualization.Charting.AxisType.Secondary;\t\t\/\/&lt;Select secondary Axis Y2\r\n\tChartSeries2.Legend = &quot;Legend1&quot;;\r\n\tChartSeries2.Name = &quot;Power&quot;;\r\n\tChartSeries2.Points.DataBindXY(ValuesX2, ValuesY2);\r\n\tthis.Chart1.Series.Add(ChartSeries2);\r\n\r\n\r\n\r\n\tChart1.Visible = true;\r\n\treturn;\r\n<\/code><\/pre>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \/\/&#8212;&#8211; DO CHART BASIC SETUP &#8212;&#8211; \/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = (new System.Windows.Forms.DataVisualization.Charting.ChartArea()); System.Windows.Forms.DataVisualization.Charting.Legend legend1 = (new System.Windows.Forms.DataVisualization.Charting.Legend()); chartArea1.AxisX.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9); chartArea1.AxisY.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9); chartArea1.AxisY2.TitleFont = new System.Drawing.Font(&quot;Arial&quot;, 9); \/\/&#8212;&#8211; SETUP X AXIS (TIME) &#8212;&#8211; chartArea1.AxisX.Title = &quot;Secs&quot;; chartArea1.AxisX.Minimum = 0; chartArea1.AxisX.Maximum = (ApMain.GRAPHS_BUFFER_LOG_EVERY_SECS * ApMain.GRAPHS_BUFFER_LENGTH); chartArea1.AxisX.Interval = 60; \/\/Axis [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"class_list":["post-302","post","type-post","status-publish","format-standard","hentry","category-examples"],"_links":{"self":[{"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/posts\/302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/comments?post=302"}],"version-history":[{"count":2,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/posts\/302\/revisions"}],"predecessor-version":[{"id":304,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/posts\/302\/revisions\/304"}],"wp:attachment":[{"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/media?parent=302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/categories?post=302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibex.tech\/csharp\/wp-json\/wp\/v2\/tags?post=302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}