2013-03-26 3 views
3

Я нахожусь в тупике по проблеме, которая кажется легкой, обозначая оси X и Y!Как нарисовать оси Excel X и Y в 2d-графе

Я создаю граф Excel в VS2010 с C#. Это 2D-диаграмма рассеяния XY. Но я не могу контролировать метку оси X! Я могу управлять меткой оси Y! Я потратил слишком много времени, пытаясь понять это и отказался. Поэтому я ищу чью-то помощь! Вот мой код:

private void showExcelXY_v2() 
    { 
     xla = new Microsoft.Office.Interop.Excel.Application(); 

     xla.Visible = true; 
     Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)xla.ActiveSheet; 

     // Now create the chart. 
     ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(Type.Missing); 
     ChartObject chartObj = chartObjs.Add(100, 20, 500, 300); 
     Microsoft.Office.Interop.Excel.Chart xlChart = chartObj.Chart; 

     //add some data from your datasource like a dataset or like below. 
     ws.Cells[1, 1] = "Value of n"; 
     ws.Cells[1, 2] = "Term"; 


     ws.Cells[2, 1] = "0"; 
     ws.Cells[2, 2] = "0"; 

     ws.Cells[3, 1] = "9181"; 
     ws.Cells[3, 2] = "0"; 

     ws.Cells[4, 1] = "9181"; 
     ws.Cells[4, 2] = "-377094"; 

     ws.Cells[5, 1] = "0"; 
     ws.Cells[5, 2] = "-377094"; 

     ws.Cells[6, 1] = "-9554"; 
     ws.Cells[6, 2] = "-329688"; 

     ws.Cells[7, 1] = "-9554"; 
     ws.Cells[7, 2] = "0"; 

     ws.Cells[8, 1] = "0"; 
     ws.Cells[8, 2] = "0"; 


     //set the source data and the chart type. 
     Range chartRange = ws.get_Range("A2", "B" + "8"); 
     xlChart.SetSourceData(chartRange, Type.Missing); 
     xlChart.ChartType = XlChartType.xlXYScatterLines; 

     // Customize axes: 
     Microsoft.Office.Interop.Excel.Axis xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); 
     xAxis.HasTitle = true; 
     xAxis.AxisTitle.Text = "Above   Pressure (psi)   Below"; 

     Microsoft.Office.Interop.Excel.Axis yAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); 
     yAxis.MajorTickMark = XlTickMark.xlTickMarkCross; 
     yAxis.HasTitle = true; 
     yAxis.AxisTitle.Text = "Compression (lbf)"; 

     // Add title: 
     xlChart.HasTitle = true; 
     xlChart.ChartTitle.Text = "XPak Performance Envelope" + '\n' + "(Open Top & Bottom)"; 

     // Remove legend: 
     xlChart.HasLegend = false; 
    } 

Результат этого кода, как вы шаг через него, показывает метка оси X идет к оси Y, то он заменяется на оси Y наклейки. Ничто не идет на ось X! Любые идеи очень приветствуются.

ответ

4

У вас есть обе оси определяется таким же образом:

xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary) 

yAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary) 

ось й является «Категория» ось и ось Y является «Value» ось. Попробуйте это для x-оси (пересмотренный):

xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary) 
+0

David, Спасибо. Ты заставил меня пройти мимо этого кошмара! Мне пришлось изменить порядок вашего предложения, поставив (XlAxisType.xlCategory, XlGroup.xlValue), чтобы он был принят, но это исправило мою проблему! –

Смежные вопросы