50求 在mschart添加多个Y轴

yekanet 2011-03-04 01:43:30
我想多添加两条Y轴,并把X的时间放在上面(默认在下面), 请问怎么设置??

效果如下图,

...全文
600 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhlhoney 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 anbin0814 的回复:]
C# code


protected void Page_Load(object sender, System.EventArgs e)
{
// Populate series with random data of different scale
Random random = new Random()……
[/Quote]

X轴对应不上怎么办?
zhlhoney 2011-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yekanet 的回复:]
怎么把X轴的时间放在上面(默认在下面)呢???
[/Quote]

我也遇到这个问题,请问介个问题解决了没啊?
zhlhoney 2011-12-17
  • 打赏
  • 举报
回复
我怎么就找不到这样的例子呢?求具体地址。
anbin0814 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yekanet 的回复:]
怎么把X轴的时间放在上面(默认在下面)呢???
[/Quote]

mschart列子里面也有啊,你一个一个去看就知道了
anbin0814 2011-03-04
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, System.EventArgs e)
{
// Populate series with random data of different scale
Random random = new Random();
DateTime date = DateTime.Now.Date;
for(int pointIndex = 0; pointIndex < 13; pointIndex++)
{
Chart1.Series["Series1"].Points.AddXY(date, random.Next(5,100));
Chart1.Series["Series2"].Points.AddXY(date, random.Next(8000, 8200));
Chart1.Series["Series3"].Points.AddXY(date, random.Next(1000,3000));
date = date.AddDays(1);
}

if(UseMultipleYAxis.Checked)
{
// Set custom chart area position
Chart1.ChartAreas["ChartArea1"].Position = new ElementPosition(25,10,68,85);
Chart1.ChartAreas["ChartArea1"].InnerPlotPosition = new ElementPosition(10,0,90,90);

// Create extra Y axis for second and third series
CreateYAxis(Chart1, Chart1.ChartAreas["ChartArea1"], Chart1.Series["Series2"], 13, 8);
CreateYAxis(Chart1, Chart1.ChartAreas["ChartArea1"], Chart1.Series["Series3"], 22, 8);
}

}

/// <summary>
/// Creates Y axis for the specified series.
/// </summary>
/// <param name="chart">Chart control.</param>
/// <param name="area">Original chart area.</param>
/// <param name="series">Series.</param>
/// <param name="axisOffset">New Y axis offset in relative coordinates.</param>
/// <param name="labelsSize">Extar space for new Y axis labels in relative coordinates.</param>
public void CreateYAxis(Chart chart, ChartArea area, Series series, float axisOffset, float labelsSize)
{
// Create new chart area for original series
ChartArea areaSeries = chart.ChartAreas.Add("ChartArea_" + series.Name);
areaSeries.BackColor = Color.Transparent;
areaSeries.BorderColor = Color.Transparent;
areaSeries.Position.FromRectangleF(area.Position.ToRectangleF());
areaSeries.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF());
areaSeries.AxisX.MajorGrid.Enabled = false;
areaSeries.AxisX.MajorTickMark.Enabled = false;
areaSeries.AxisX.LabelStyle.Enabled = false;
areaSeries.AxisY.MajorGrid.Enabled = false;
areaSeries.AxisY.MajorTickMark.Enabled = false;
areaSeries.AxisY.LabelStyle.Enabled = false;
areaSeries.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;


series.ChartArea = areaSeries.Name;

// Create new chart area for axis
ChartArea areaAxis = chart.ChartAreas.Add("AxisY_" + series.ChartArea);
areaAxis.BackColor = Color.Transparent;
areaAxis.BorderColor = Color.Transparent;
areaAxis.Position.FromRectangleF(chart.ChartAreas[series.ChartArea].Position.ToRectangleF());
areaAxis.InnerPlotPosition.FromRectangleF(chart.ChartAreas[series.ChartArea].InnerPlotPosition.ToRectangleF());

// Create a copy of specified series
Series seriesCopy = chart.Series.Add(series.Name + "_Copy");
seriesCopy.ChartType = series.ChartType;
foreach(DataPoint point in series.Points)
{
seriesCopy.Points.AddXY(point.XValue, point.YValues[0]);
}

// Hide copied series
seriesCopy.IsVisibleInLegend = false;
seriesCopy.Color = Color.Transparent;
seriesCopy.BorderColor = Color.Transparent;
seriesCopy.ChartArea = areaAxis.Name;

// Disable drid lines & tickmarks
areaAxis.AxisX.LineWidth = 0;
areaAxis.AxisX.MajorGrid.Enabled = false;
areaAxis.AxisX.MajorTickMark.Enabled = false;
areaAxis.AxisX.LabelStyle.Enabled = false;
areaAxis.AxisY.MajorGrid.Enabled = false;
areaAxis.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;
areaAxis.AxisY.LabelStyle.Font = area.AxisY.LabelStyle.Font;

// Adjust area position
areaAxis.Position.X -= axisOffset;
areaAxis.InnerPlotPosition.X += labelsSize;

}

anbin0814 2011-03-04
  • 打赏
  • 举报
回复
去看Mschart列子 ChartFeatures/Axis/MultipleYAxis
yekanet 2011-03-04
  • 打赏
  • 举报
回复
怎么把X轴的时间放在上面(默认在下面)呢???

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧