如何使用轴之间的柱形图绘制图形

时间:2016-07-11 01:31:01

标签: c# .net visual-studio charts

如何在2轴之间的c#中绘制图形,如下所示:

enter image description here

这是我在c#中使用visual studio的图表控件的图表:

enter image description here

我想绘制两个轴之间的列系列,而不是将第一列切割到左侧。

图表设置:

chart.ChartAreas[0].AxisX.Interval = 1;
chart.ChartAreas[0].AxisX.IsMarginVisible = false;
chart.ChartAreas[0].AxisX.IsStartedFromZero = true;

2 个答案:

答案 0 :(得分:0)

您的设置有误。

特别是设置IsMarginVisible = false;会使列向左滑动,其中一半会被切断。因此,请删除该行并保留默认值true

此外,您还需要在Interval中添加Offset,因此它不会开始将轴标记为负值..:

Axis ax = chart.ChartAreas[0].AxisX;
ax.Interval = 1;
ax.IntervalOffset = 1;

enter image description here

更新:如果您确实要删除这些空白,则应设置要编入索引的系列:

yourSeries.IsXValueIndexed = true;

MSDN on this:

  

说明

     

系列中的所有数据点都使用顺序索引,如果是这样的话   属性为true,则数据点将按顺序绘制,   无论其相关的X值如何。这意味着会有   没有"失踪"数据点。

     

例如,假设一系列中有三(3)个数据点   X值为1,2和4.如果此属性为false,则会有一个   标记为" 3"的X轴位置处缺少数据点。但是,如果你   将此属性设置为true,将绘制三个数据点   点1,2和4,顺序,并没有丢失的数据   点。标有" 3"的X轴位置;不会出现在图表上。

     

当您不想丢失数据点时,这非常有用   您知道自己没有数据的时间间隔,例如周末。

     

如果您要显示多个系列且至少有一个系列使用   索引的X值,然后所有系列必须对齐 - 即,具有   相同数量的数据点 - 相应的点必须具有   相同的X值。

请特别注意理解最后一段,特别是如果你想使用一些堆积图表!

使用IsXValueIndexed设置的一种替代方法是在间隙处插入空数据点。最好使用DataPoint.IsEmpty属性。

答案 1 :(得分:0)

我认为,我的尝试和错误找到了解决方案。这就是我所做的:

// Create some null data point with integer value
DataPoint nulldp1 = new DataPoint();
nulldp1.SetValueXY(1, 0);

DataPoint nulldp2 = new DataPoint();
nulldp2.SetValueXY(2, 0);

chart.Series["SeriesName"].Points.Add(nulldp1);
chart.Series["SeriesName"].Points.Add(nulldp2);


// Plotting the chart
double index = 0.5;
foreach (var item in items)
{
    // The data point for each series
    DataPoint dp = new DataPoint();
    dp.XValue = index;
    dp.SetValueY(item.Percentage);

    chart.Series[item.Name].Points.Add(dp);

    index++;
}

我不知道这个解决方案是否合适。但是,最终它解决了我的问题。