c#excel雷达图 - 如何改变水平轴?

时间:2018-01-12 09:36:49

标签: c# wpf excel radar-chart

在我的WPF应用程序中,我已经将数据导出到Excel以在雷达图中绘制它们,只是为了将此图表重新导入应用程序。我需要这样做才能对数据进行实时分析,而且使用WPF工具包我还无法创建雷达图表(我在使用Excel之前通过搜索解决方案花了很多时间)。

我现在的问题是,我无法通过C#更改雷达图表的水平轴。在Excel本身,我会通过设置图表选项来做到这一点,但在我的代码中,我没有得到线索但是在调试中我没有找到任何图表项目,这告诉了我更多。到目前为止我的代码如下:

Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Open(fileName);
Excel.Worksheet worksheet = workbook.Worksheets[1] as Excel.Worksheet;
CreateData(worksheet, sortangle, sortmu);

// Add chart.
Excel.ChartObjects xlCharts = worksheet.ChartObjects() as Excel.ChartObjects;
Excel.ChartObject myChart = xlCharts.Add(120, 10, 300, 300) as Excel.ChartObject;
Excel.Chart chart = myChart.Chart;

chart.ChartType = Excel.XlChartType.xlRadar;
var scale_range = worksheet.get_Range("A1", "A" + sortangle.Count.ToString());
var data_range = worksheet.get_Range("B1", "B" + sortangle.Count.ToString());
chart.SetSourceData(data_range);
chart.HasLegend = false;

// Set chart properties.
chart.ChartWizard(Source: data_range);

所以我得到了这样的结果:

https://docs.djangoproject.com/en/2.0/ref/models/querysets/

但是旋转轴需要缩放0到360度,因此我处理的数据与角度信息一起存储。

所以我试着通过查看其他C#Excel这样的问题,例如enter image description here,添加chart.SeriesCollection(1).XValues = scale_range;chart.Axes(Excel.XlAxisType.xlValue).Source = scale_range;等不同行。即使将ChartWizard更改为chart.ChartWizard(Source: data_range, SeriesLabels: scale_range);,我也没有走得太远。

对于任何建议,我将不胜感激。

编辑: 通过检查您可能看到的代码,scale_range未使用atm。我也尝试将它带入data_range项目,但后来我得到两行。

1 个答案:

答案 0 :(得分:1)

好。终于得到了解决方案(在here的帮助下)并希望我可以用同样的问题帮助其他任何人。这也适用于雷达图表。只需更正用于更改水平轴的代码:

 Excel.Axis xAxis = (Excel.Axis)chart.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary);
 xAxis.CategoryNames = scale_range;