Chart柱状图与折线图

 public Form1()
 {
    InitializeComponent();
    chartStyle(); //统计图样式
 }
void chartStyle()
{
    chart1.Series.Clear();
    ChartHelper.AddSeries(chart1, "柱状图", SeriesChartType.Column, Color.FromArgb(46, 199, 201), Color.Red, true);
    ChartHelper.AddSeries(chart1, "曲线图", SeriesChartType.Spline, Color.Red, Color.Red);
    ChartHelper.SetTitle(chart1, m_TableName1, new Font("微软雅黑", 12), Docking.Bottom, Color.White);
    ChartHelper.SetStyle(chart1, Color.Transparent, Color.White);
    ChartHelper.SetLegend(chart1, Docking.Top, StringAlignment.Center, Color.Transparent, Color.White);
    ChartHelper.SetXY(chart1, "部门", "实验次数", StringAlignment.Far, Color.White, Color.White, AxisArrowStyle.SharpTriangle, 1, 10);
    ChartHelper.SetMajorGrid(chart1, Color.Transparent, 20, 2);

    RefreshData();
}

  public void RefreshData()
  {
      //这里是读取文本文件数据,里面包含X、Y值,实际可以改写为X、Y值的List,直接改写后面的函数
      List<DataValue> dataValues = CReadExcel.ReadExcelData(m_TableName1);
      RefreshChart(dataValues, "chart1");
  }

  //统计图赋值
  public delegate void RefreshChartDelegate(List<DataValue> values, string type);

  public void RefreshChart(List<DataValue> values, string type)
  {
      List<string> x = new List<string>();
      List<double> y = new List<double>();

      foreach (DataValue value in values)
      {
          x.Add(value.Name);
          y.Add(Convert.ToDouble(value.Value));
      }
      if (type == "chart1")
      {
          if (this.chart1.InvokeRequired)
          {
              RefreshChartDelegate stcb = new RefreshChartDelegate(RefreshChart);
              this.Invoke(stcb, new object[] { x, y, type });
          }
          else
          {
              chart1.Series[0].Points.DataBindXY(x, y);
              chart1.Series[1].Points.DataBindXY(x, y);
          }

          //ChartHelper.Column(chart1, x.ToArray(), y.ToArray());
      }
  }
public class ChartHelper
{
    /// <summary>
    /// Name:添加序列
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="seriesName">序列名称</param>
    /// <param name="chartType">图表类型</param>
    /// <param name="color">颜色</param>
    /// <param name="markColor">标记点颜色</param>
    /// <param name="showValue">是否显示数值</param>
    public static void AddSeries(Chart chart, string seriesName, SeriesChartType chartType, Color color, Color markColor, bool showValue = false)
    {
        chart.Series.Add(seriesName);
        chart.Series[seriesName].ChartType = chartType;
        chart.Series[seriesName].Color = color;
        if (showValue)
        {
            chart.Series[seriesName].IsValueShownAsLabel = true;
            chart.Series[seriesName].MarkerStyle = MarkerStyle.Circle;
            chart.Series[seriesName].MarkerColor = markColor;
            chart.Series[seriesName].LabelForeColor = color;
            chart.Series[seriesName].LabelAngle = -90;
        }
    }

    /// <summary>
    /// Name:设置标题
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="chartName">图表名称</param>
    public static void SetTitle(Chart chart, string chartName, Font font, Docking docking, Color foreColor)
    {
        chart.Titles.Add(chartName);
        chart.Titles[0].Font = font;
        chart.Titles[0].Docking = docking;
        chart.Titles[0].ForeColor = foreColor;
    }

    /// <summary>
    /// Name:设置样式
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="backColor">背景颜色</param>
    /// <param name="foreColor">字体颜色</param>
    public static void SetStyle(Chart chart, Color backColor, Color foreColor)
    {
        chart.BackColor = backColor;
        chart.ChartAreas[0].BackColor = backColor;
        chart.ForeColor = Color.Red;
    }

    /// <summary>
    /// Name:设置图例
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="docking">停靠位置</param>
    /// <param name="align">对齐方式</param>
    /// <param name="backColor">背景颜色</param>
    /// <param name="foreColor">字体颜色</param>
    public static void SetLegend(Chart chart, Docking docking, StringAlignment align, Color backColor, Color foreColor)
    {
        chart.Legends[0].Docking = docking;
        chart.Legends[0].Alignment = align;
        chart.Legends[0].BackColor = backColor;
        chart.Legends[0].ForeColor = foreColor;
    }

    /// <summary>
    /// Name:设置XY轴
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="xTitle">X轴标题</param>
    /// <param name="yTitle">Y轴标题</param>
    /// <param name="align">坐标轴标题对齐方式</param>
    /// <param name="foreColor">坐标轴字体颜色</param>
    /// <param name="lineColor">坐标轴颜色</param>
    /// <param name="arrowStyle">坐标轴箭头样式</param>
    /// <param name="xInterval">X轴的间距</param>
    /// <param name="yInterval">Y轴的间距</param>
    public static void SetXY(Chart chart, string xTitle, string yTitle, StringAlignment align, Color foreColor, Color lineColor, AxisArrowStyle arrowStyle, double xInterval, double yInterval)
    {
        chart.ChartAreas[0].AxisX.Title = xTitle;
        chart.ChartAreas[0].AxisY.Title = yTitle;
        chart.ChartAreas[0].AxisX.TitleAlignment = align;
        chart.ChartAreas[0].AxisY.TitleAlignment = align;
        chart.ChartAreas[0].AxisX.TitleForeColor = foreColor;
        chart.ChartAreas[0].AxisY.TitleForeColor = foreColor;
        chart.ChartAreas[0].AxisX.LabelStyle = new LabelStyle() { ForeColor = foreColor };
        chart.ChartAreas[0].AxisY.LabelStyle = new LabelStyle() { ForeColor = foreColor };
        chart.ChartAreas[0].AxisX.LineColor = lineColor;
        chart.ChartAreas[0].AxisY.LineColor = lineColor;
        chart.ChartAreas[0].AxisX.ArrowStyle = arrowStyle;
        chart.ChartAreas[0].AxisY.ArrowStyle = arrowStyle;
        chart.ChartAreas[0].AxisX.Interval = xInterval;
        chart.ChartAreas[0].AxisY.Interval = yInterval;

        //chart.ChartAreas[0].Area3DStyle.Enable3D = true;
    }

    /// <summary>
    /// Name:设置网格
    /// </summary>
    /// <param name="chart">图表对象</param>
    /// <param name="lineColor">网格线颜色</param>
    /// <param name="xInterval">X轴网格的间距</param>
    /// <param name="yInterval">Y轴网格的间距</param>
    public static void SetMajorGrid(Chart chart, Color lineColor, double xInterval, double yInterval)
    {
        chart.ChartAreas[0].AxisX.MajorGrid.LineColor = lineColor;
        chart.ChartAreas[0].AxisY.MajorGrid.LineColor = lineColor;
        chart.ChartAreas[0].AxisX.MajorGrid.Interval = xInterval;
        chart.ChartAreas[0].AxisY.MajorGrid.Interval = yInterval;
    }


}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值