gpt4 book ai didi

c# - 具有堆叠柱和两个 Y 轴的图表

转载 作者:行者123 更新时间:2023-11-30 12:27:06 25 4
gpt4 key购买 nike

我正在尝试创建一个包含多个列的图表,包括一些堆叠的并且还有 2 个 Y 轴。

当所有列都使用主 y 轴时,它们会正确并排显示。 One Y Axis

但是当一个(或多个但不是全部)使用第二个 y 轴时,它似乎将所有列堆叠在每个轴上,而不是并排显示。 Two Y Axis

如何让列并排显示,同时显示两个 y 轴。我在下面包含了我的演示页面代码。

aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>

<%@ Register TagPrefix="asp" Namespace="System.Web.UI.DataVisualization.Charting"
Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

<asp:chart id="Chart1" runat="server" height="400px" width="800px">
<Titles>
<asp:Title ShadowOffset="3" Name="Development capacity" />
</Titles>
<Legends>
<asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Development backlog (in days)"
LegendStyle="Row" />
<asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Development days completed"
LegendStyle="Row" />
<asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Development capacity (in days)"
LegendStyle="Row" />
<asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="New days scheduled (rolling av.)"
LegendStyle="Row" />
</Legends>
<Series>
<asp:Series Name="DevelopmentBacklog" />
<asp:Series Name="DevDaysCompleted" />
<asp:Series Name="DevCapacity" />
<asp:Series Name="NewDaysScheduled" />
</Series>
<ChartAreas>
<asp:ChartArea Name="chartArea" BorderWidth="0" />
</ChartAreas>
</asp:chart>

代码隐藏:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;

public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string[] xAxis = { "Jan 2011", "Feb 2011", "Mar 2011", "Apr 2011", "May 2011", "Jun 2011", "Jul 2011", "Aug 2011" };
double[] yAxisDevBacklog = { 220, 200, 120, 30, 25, 50, 30, 590 };
double[] yAxisDevDaysCompleted = { 140, 145, 165, 105, 98, 140, 80, 100 };
double[] yAxisDevCapacity = { 140, 155, 182, 122, 184, 210, 190, 205};
double[] yAxisNewDaysScheduled = { 29, 40, 55, 48, 59, 75, 70, 182 };

Chart1.Series["DevelopmentBacklog"].Points.DataBindXY(xAxis, yAxisDevBacklog);
Chart1.Series["DevelopmentBacklog"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["DevelopmentBacklog"].BorderWidth = 3;
Chart1.Series["DevelopmentBacklog"].Color = Color.Blue;
//// Uncomment this line to use the secondary y axis
//// Chart1.Series["DevelopmentBacklog"].YAxisType = AxisType.Secondary;
Chart1.Series["DevelopmentBacklog"]["StackedGroupName"] = "DevelopmentBacklog";

Chart1.Series["NewDaysScheduled"].Points.DataBindXY(xAxis, yAxisNewDaysScheduled);
Chart1.Series["NewDaysScheduled"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["NewDaysScheduled"].BorderWidth = 3;
Chart1.Series["NewDaysScheduled"].Color = Color.Green;
Chart1.Series["NewDaysScheduled"]["StackedGroupName"] = "NewDaysScheduled";

Chart1.Series["DevDaysCompleted"].Points.DataBindXY(xAxis, yAxisDevDaysCompleted);
Chart1.Series["DevDaysCompleted"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["DevDaysCompleted"].BorderWidth = 3;
Chart1.Series["DevDaysCompleted"].Color = Color.LightGray;
Chart1.Series["DevDaysCompleted"]["StackedGroupName"] = "DevDaysCompleted";

Chart1.Series["DevCapacity"].Points.DataBindXY(xAxis, yAxisDevCapacity);
Chart1.Series["DevCapacity"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["DevCapacity"].BorderWidth = 3;
Chart1.Series["DevCapacity"].Color = Color.OrangeRed;
Chart1.Series["DevCapacity"]["StackedGroupName"] = "DevDaysCompleted";

Chart1.ChartAreas["chartArea"].AxisX.MajorGrid.Enabled = false;
Chart1.ChartAreas["chartArea"].AxisY2.MajorGrid.Enabled = false;
}
}

最佳答案

我认为您需要设置系列的自定义属性。默认情况下,此属性设置为自动。您需要将其更改为 True,以便它始终并排绘制。

Chart1.Series["DevelopmentBacklog"].CustomProperties = "DrawSideBySide=True";
Chart1.Series["DevDaysCompleted"].CustomProperties = "DrawSideBySide=True";
Chart1.Series["DevCapacity"].CustomProperties = "DrawSideBySide=True";
Chart1.Series["NewDaysScheduled"].CustomProperties = "DrawSideBySide=True";

MSDN - DrawSideBySide Property

关于c# - 具有堆叠柱和两个 Y 轴的图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com