使用AxMSChart20Lib.AxMSChart显示图表

public void print()
  {
   string sql="select lie2 from xtsd where lie1='xsbg'";
   ds.Clear();
   ds=objbase.ExecSelect(sql,"xtsd");
   if(ds.Tables[0].Rows.Count>0)
   {
    this.Txt_xsbg.Text=ds.Tables[0].Rows[0]["lie2"].ToString();
    this.xsbg=Int32.Parse(ds.Tables[0].Rows[0]["lie2"].ToString().Trim());
   }
   sql="select lie2 from xtsd where lie1='xsbm'";
   ds.Clear();
   ds=objbase.ExecSelect(sql,"xtsd");
   if(ds.Tables[0].Rows.Count>0)
   {
    this.Txt_xsbm.Text=ds.Tables[0].Rows[0]["lie2"].ToString();
    this.xsbm=Int32.Parse(ds.Tables[0].Rows[0]["lie2"].ToString().Trim());
   }
   this.axMSChart1.Title.Text="驾驶员出车公里数与出发费用按比例显示柱状图(公里象素比:100:"+this.Txt_xsbg.Text.Trim()+" 出发费象素比:100:"+this.Txt_xsbm.Text.Trim()+")";
   sql="select * from driverinfo";
   ds.Clear();
   ds=objbase.ExecSelect(sql,"driverinfo");
   if(ds.Tables[0].Rows.Count>0)
   {
    Object[,] myay=new Object[ds.Tables[0].Rows.Count,2];
    string[,] xinxi=new string[ds.Tables[0].Rows.Count,2];
    //Object[,,] myay=new Object[ds.Tables[0].Rows.Count,ds.Tables[0].Rows.Count,2];
    
    //myay[0,0]="时间描述";//这里可以不用写什么
    //myay[0,1]="压力描述";//这里是描述坐标点的压力


    DataSet dsl=new DataSet();
    for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
     string jsybh=ds.Tables[0].Rows[i]["jsybh"].ToString().Trim();
     string xm=ds.Tables[0].Rows[i]["xm"].ToString().Trim();
     if(ChuanZ.cs.Trim()=="出")
     {
      sql="select sum(xsgl) xsgl,sum(cff) cff from pcgl where jsybh='"+jsybh+"' and ccriqi>='"+ChuanZ.datestart.Trim()+"' and ccriqi<='"+ChuanZ.dateend.Trim()+"'";

     }
     if(ChuanZ.cs.Trim()=="收")
     {
      sql="select sum(xsgl) xsgl,sum(cff) cff from pcgl where jsybh='"+jsybh+"' and scriqi>='"+ChuanZ.datestart.Trim()+"' and scriqi<='"+ChuanZ.dateend.Trim()+"'";
     }
     if(ChuanZ.cs.Trim()=="")
     {
      int year=System.DateTime.Now.Year;
      int month=System.DateTime.Now.Month;
      string start=year.ToString()+"-"+month.ToString()+"-1"; 
      sql="select sum(xsgl) xsgl,sum(cff) cff from pcgl where jsybh='"+jsybh+"' and ccriqi>='"+start+"' ";
     }
     dsl.Clear();
     dsl=objbase.ExecSelect(sql,"money");
//     int heightg=0;
//     int heightm=0;
     try
     {
      myay[i,0]=(Object)((Int32.Parse(dsl.Tables[0].Rows[0]["xsgl"].ToString().Trim())/100.0)*xsbg).ToString();
      myay[i,1]=(Object)((Int32.Parse(dsl.Tables[0].Rows[0]["cff"].ToString().Trim())/100.0)*xsbm).ToString();
      xinxi[i,0]=dsl.Tables[0].Rows[0]["xsgl"].ToString().Trim();
      xinxi[i,1]=dsl.Tables[0].Rows[0]["cff"].ToString().Trim();
     }
     catch
     {
      myay[i,0]="0";
      myay[i,1]="0";
      xinxi[i,0]="0";
      xinxi[i,1]="0";
     }
     
     

     //这里是个重点,为什么要加上"["+"]"
     //其实这个axMSChart1玩意很有意识的,如果你的字符串是数字类型的描述
     //就算是字符串类型也不会当成横坐标哦!!
     //嘿嘿有意识把,本人曾经为了这个问题搞了几天的!
     //myay[i,0]=(Object)dsl.Tables[0].Rows[0]["xsgl"].ToString();
     //myay[i,1]=(Object)dsl.Tables[0].Rows[0]["cff"].ToString();
     
    }
    //设计axMSChart1的数据

    axMSChart1.ChartData = myay;
    this.axMSChart1.FootnoteText="实际公里数、出发费:";
    for(short i=1;i<=this.axMSChart1.RowCount;i++)
    {
     this.axMSChart1.Row=i;
     this.axMSChart1.RowLabel=ds.Tables[0].Rows[i-1]["xm"].ToString();//+"("+xinxi[i-1,0].Trim()+","+xinxi[i-1,1].Trim()+")";
     this.axMSChart1.FootnoteText=this.axMSChart1.FootnoteText+ds.Tables[0].Rows[i-1]["xm"].ToString()+"("+xinxi[i-1,0].Trim()+","+xinxi[i-1,1].Trim()+") ";
    }
    this.axMSChart1.Column=1;
    this.axMSChart1.ColumnLabel="公里数";
    
    this.axMSChart1.Column=2;
    this.axMSChart1.ColumnLabel="出发费";
    //MessageBox.Show(this.axMSChart1.RowLabel[1].ToString());
    //this.axMSChart1.RowLabel[
    
    
//    //设计图表的表头名称和对齐方式
//    axMSChart1.Title.Text = "这里是一个图表";
//
//    axMSChart1.Legend.Location.LocationType = MSChart20Lib.VtChLocationType.VtChLocationTypeRight;
//
//    axMSChart1.Legend.Location.Visible = true;
//
//
//    //设计X轴名称
//    axMSChart1.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdX, null).AxisTitle.Text = "这里是时间描述";
//           
//    //设计Y轴名称
//    axMSChart1.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdY, null).AxisTitle.Text = "这里是压力描述";

 


    //设计图表形状的描述方式,是并图还是线图等等
    //axMSChart1.chartType = MSChart20Lib.VtChChartType.VtChChartType2dLine;
    

    ds.Clear();
    
    
   }
  } 

参考帖子:http://community.csdn.net/Expert/topic/5064/5064877.xml?temp=.8670008hzjlltj() 得回复

wxPython 是一个流行的 Python 图形用户界面 (GUI) 库,它可以让开发者轻松地创建丰富的窗口应用程序。而 wx.lib.plot 是 wxPython 中提供的一个库,用于在窗口应用程序中绘制图表。 在显示数据标签方面,wx.lib.plot 提供了一个函数叫做 drawValueLabels(),它可以用来在绘制的图表显示数据标签。 要使用 drawValueLabels() 函数,首先需要创建一个 PlotCanvas 对象,并将绘制的图表添加到该对象中。然后,可以使用该对象的 drawValueLabels() 方法来显示数据标签。 该函数的调用方式如下: ```python plotCanvas.drawValueLabels(labels, labelFont=None, direction='horizontal', reverse=False) ``` 其中,labels 参数是要显示的数据标签,它是一个字典,其中键为数据点的索引,值为对应的标签文本。labelFont 参数用于设置标签的字体,direction 参数用于设置标签的显示方向,可以是 'horizontal'(水平显示)或 'vertical'(垂直显示),reverse 参数用于控制标签的显示顺序。 示例代码如下: ```python import wx import wx.lib.plot as plot app = wx.App() frame = wx.Frame(None, -1, "Plot Example", size=(600, 400)) panel = wx.Panel(frame) # 创建 plot canvas plotCanvas = plot.PlotCanvas(panel) # 创建数据 x = [0, 1, 2, 3, 4] y = [3, 5, 8, 4, 6] # 绘制图表 plotCanvas.DrawBarChart(data=[list(zip(x, y))], xLabel="X", yLabel="Y") # 添加数据标签 labels = {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'} plotCanvas.drawValueLabels(labels) panel.Layout() frame.Show() app.MainLoop() ``` 以上示例代码首先创建了一个窗口应用程序,然后在窗口中创建了一个 plot canvas,并绘制了一个条形图。接着,创建了一个标签字典,并调用 drawValueLabels() 函数显示数据标签。最后,显示应用程序并进入主事件循环。 通过以上步骤,我们可以在使用 wxPython 和 wx.lib.plot 绘制的图表显示数据标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值