如何在2轴之间的c#中绘制图形,如下所示:
这是我在c#中使用visual studio的图表控件的图表:
我想绘制两个轴之间的列系列,而不是将第一列切割到左侧。
图表设置:
chart.ChartAreas[0].AxisX.Interval = 1;
chart.ChartAreas[0].AxisX.IsMarginVisible = false;
chart.ChartAreas[0].AxisX.IsStartedFromZero = true;
答案 0 :(得分:0)
您的设置有误。
特别是设置IsMarginVisible = false;
会使列向左滑动,其中一半会被切断。因此,请删除该行并保留默认值true
!
此外,您还需要在Interval中添加Offset,因此它不会开始将轴标记为负值..:
Axis ax = chart.ChartAreas[0].AxisX;
ax.Interval = 1;
ax.IntervalOffset = 1;
更新:如果您确实要删除这些空白,则应设置要编入索引的系列:
yourSeries.IsXValueIndexed = true;
说明
系列中的所有数据点都使用顺序索引,如果是这样的话 属性为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++;
}
我不知道这个解决方案是否合适。但是,最终它解决了我的问题。