Winforms范围条形图轴未预期渲染

发布于 2025-01-30 09:46:23 字数 1255 浏览 2 评论 0 原文

我正在尝试使用System.Windows.Forms.Datavisualization.charting.seriescharttype.rangebar生成范围的条形图。当我将X轴添加为整数时,它会正确渲染如下所示:

        int[] x = { 0, 0, 0, 1, 1, 1 };
        int[] y = { 10, 2, 35, 1, 10, 20 };
        int[] y2 = { 35, 4, 36, 2, 15, 40 };
        var xValue = x.ToList();
        var yValue1 = y.ToList();
        var yValue2 = y2.ToList();

        chart2.Series[0].Points.DataBindXY(x, y, y2);

“正确渲染的图表”

但是,当我将x轴整数交换为串联时,图表并不如上所述:

        string[] x = { "Test", "Test", "Test", "Test1", "Test1", "Test1" };
        int[] y = { 10, 2, 35, 1, 10, 20 };
        int[] y2 = { 35, 4, 36, 2, 15, 40 };
        var xValue = x.ToList();
        var yValue1 = y.ToList();
        var yValue2 = y2.ToList();
        chart2.Series[0].XValueType = 
        System.Windows.Forms.DataVisualization.Charting.ChartValueType.String;

        chart2.Series[0].Points.DataBindXY(x, y, y2);

i.sstatic.net/9kw3t.png“ rel =” nofollow noreferrer 在维护Y轴的INT或DATETIME值的同时,使用X轴的字符串值进行了优雅的解决方法?事先感谢您的帮助。

I am attempting to generate a ranged bar chart using System.Windows.Forms.DataVisualization.Charting.SeriesChartType.RangeBar. When I add the x axis as integers it renders correctly as shown below:

        int[] x = { 0, 0, 0, 1, 1, 1 };
        int[] y = { 10, 2, 35, 1, 10, 20 };
        int[] y2 = { 35, 4, 36, 2, 15, 40 };
        var xValue = x.ToList();
        var yValue1 = y.ToList();
        var yValue2 = y2.ToList();

        chart2.Series[0].Points.DataBindXY(x, y, y2);

Correctly Rendered Chart

However, when I swap the x axis integers to strings the chart does not render as above:

        string[] x = { "Test", "Test", "Test", "Test1", "Test1", "Test1" };
        int[] y = { 10, 2, 35, 1, 10, 20 };
        int[] y2 = { 35, 4, 36, 2, 15, 40 };
        var xValue = x.ToList();
        var yValue1 = y.ToList();
        var yValue2 = y2.ToList();
        chart2.Series[0].XValueType = 
        System.Windows.Forms.DataVisualization.Charting.ChartValueType.String;

        chart2.Series[0].Points.DataBindXY(x, y, y2);

enter image description here

Is there an elegant workaround to using string values for the x-axis while maintaining int or DateTime values for the y axis? Thanks in advance for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屋檐 2025-02-06 09:46:23

您可以尝试!

            int[] tmpx = { 0, 0, 0, 1, 1, 1 };
            string[] x = { "Test", "Test", "Test", "Test1", "Test1", "Test1" };
            int[] y = { 10, 2, 35, 1, 10, 20 };
            int[] y2 = { 35, 4, 36, 2, 15, 40 };
            //var xValue = x.ToList();
            //var yValue1 = y.ToList();
            //var yValue2 = y2.ToList();
            for (int i = 0; i<x.Length; i++)
            {
                int index = chart1.Series[0].Points.AddXY(tmpx[i], y[i], y2[i]);
                chart1.Series[0].Points[index].AxisLabel = x[i];
            }

You can try it!

            int[] tmpx = { 0, 0, 0, 1, 1, 1 };
            string[] x = { "Test", "Test", "Test", "Test1", "Test1", "Test1" };
            int[] y = { 10, 2, 35, 1, 10, 20 };
            int[] y2 = { 35, 4, 36, 2, 15, 40 };
            //var xValue = x.ToList();
            //var yValue1 = y.ToList();
            //var yValue2 = y2.ToList();
            for (int i = 0; i<x.Length; i++)
            {
                int index = chart1.Series[0].Points.AddXY(tmpx[i], y[i], y2[i]);
                chart1.Series[0].Points[index].AxisLabel = x[i];
            }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文