使用带有RadBarChart的2轴标签并且栏之间没有间隙的问题

时间:2013-01-08 10:05:15

标签: c# asp.net telerik radchart

我有两个问题:

  1. 我想要数据表中的名字,但它以数字形式显示我。

  2. 我想在两个酒吧之间留一个差距,但我找不到办法。

  3. 以下是代码:

    private void InitializeGraph(DataTable poDt)     {         Telerik.Charting.ChartSeries chartseries = new Telerik.Charting.ChartSeries();

        try
        {
    
    
            chartseries.Type = Telerik.Charting.ChartSeriesType.Bar;
    
            Telerik.Charting.ChartSeriesItem csItem;
    
            RadChart1.PlotArea.XAxis.AutoScale = true;
            RadChart1.PlotArea.XAxis.DataLabelsColumn = "Name";
    
    
            for (int iRow = 0; iRow < poDt.Rows.Count; iRow++)
            {
                chartseries = new Telerik.Charting.ChartSeries();
    
                chartseries.Type = Telerik.Charting.ChartSeriesType.Bar;
    
                chartseries.Name = poDt.Rows[iRow]["Name"].ToString().Trim();
    
    
                csItem = new Telerik.Charting.ChartSeriesItem();
                csItem.Name = poDt.Rows[iRow]["Name"].ToString();
                csItem.Label.TextBlock.Text = poDt.Rows[iRow]["Value"].ToString(); 
                RadChart1.PlotArea.XAxis.Appearance.TextAppearance.AutoTextWrap = Telerik.Charting.Styles.AutoTextWrap.True;
    
                csItem.YValue = Int32.Parse(poDt.Rows[iRow]["Value"].ToString());
    
                chartseries.AddItem(csItem);
                RadChart1.Series.Add(chartseries);
    
            }
            RadChart1.PlotArea.XAxis.AddRange(1, poDt.Rows.Count, 1);
    
            RadChart1.PlotArea.XAxis[poDt.Rows.Count].TextBlock.Text = chartseries.Name;
            poDt.Rows.Count.ToString();
            RadChart1.PlotArea.XAxis.AutoShrink = false;
    
    
            RadChart1.PlotArea.XAxis.AutoShrink = true;
            RadChart1.Series.Add(chartseries);
    
            RadChart1.PlotArea.Appearance.Border.Visible = false;
            RadChart1.Appearance.Border.Visible = true;
            RadChart1.PlotArea.YAxis.IsLogarithmic = true;
    
            RadChart1.PlotArea.YAxis.AutoScale = true;
            RadChart1.PlotArea.YAxis.Appearance.ValueFormat=Telerik.Charting.Styles.ChartValueFormat.Number;
            RadChart1.Appearance.BarWidthPercent = 50;
    
    
    
            RadChart1.Chart.Appearance.FillStyle.MainColor = System.Drawing.Color.Red;
            RadChart1.Chart.Appearance.FillStyle.MainColor = System.Drawing.Color.Transparent;
            RadChart1.Legend.Appearance.FillStyle.MainColor = System.Drawing.Color.Transparent;
    
        }
        catch (Exception Ex)
        {
            //throw;
        }
        finally
        {
            poDt.Clear();
            poDt = null;
            chartseries = null;
        }
    }
    

1 个答案:

答案 0 :(得分:0)

抱歉,我不相信有办法同时显示两个X轴。

我的建议是您为X轴使用CategoricalAxis并创建一个自定义条形图,其中包含区分这两个值的图例。我没有任何工作样本,但您可以将这个Telerik Silverlight演示用于初学者。

此外,如果可以,请切换到RadChartView。因为我会建议一种更简单的方法,即使用分类X轴并创建多个Y轴。如果你走这条路线,你可以为具有多个Y轴的DateTimeContinuous(或Categorical)X轴做这样的事情:

int count = 0;
LineSeries lineSeries = new LineSeries();

lineSeries.CategoryBinding = new PropertyNameDataPointBinding() { PropertyName = "TimeStamp" };
lineSeries.ValueBinding = new PropertyNameDataPointBinding() { PropertyName = "Value" };  

lineSeries.VerticalAxis = new LinearAxis()
{
   Title = "Title Here"
};

lineSeries.ItemsSource = yourCollection.Values;

//First Y-axis to be placed on the left of X-axis,
//additional Y-axes to be placed on right
if (count > 0 )
{
     lineSeries.VerticalAxis.HorizontalLocation = Telerik.Charting.AxisHorizontalLocation.Right;
}
count++;
chartName.Series.Add(lineSeries);

希望这有帮助。