创建和管理图表
创建图表
创建图表很简单
使用以下示例代码,用Aspose.Cells for Python via .NET创建图表非常简单:
from aspose.cells import Workbook | |
from aspose.cells.charts import ChartType | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Instantiating a Workbook object | |
workbook = Workbook() | |
# Obtaining the reference of the first worksheet | |
worksheet = workbook.worksheets[0] | |
# Adding sample values to cells | |
worksheet.cells.get("A2").put_value("Category1") | |
worksheet.cells.get("A3").put_value("Category2") | |
worksheet.cells.get("A4").put_value("Category3") | |
worksheet.cells.get("B1").put_value("Column1") | |
worksheet.cells.get("B2").put_value(4) | |
worksheet.cells.get("B3").put_value(20) | |
worksheet.cells.get("B4").put_value(50) | |
worksheet.cells.get("C1").put_value("Column2") | |
worksheet.cells.get("C2").put_value(50) | |
worksheet.cells.get("C3").put_value(100) | |
worksheet.cells.get("C4").put_value(150) | |
# Adding a chart to the worksheet | |
chartIndex = worksheet.charts.add(ChartType.COLUMN, 5, 0, 15, 5) | |
# Accessing the instance of the newly added chart | |
chart = worksheet.charts[chartIndex] | |
# Setting chart data source as the range "A1:C4" | |
chart.set_chart_data_range("A1:C4", True) | |
# Saving the Excel file | |
workbook.save(dataDir + "output.xls") |
创建图表的要点
在创建图表之前,了解一些基本概念非常重要,这些概念在使用Aspose.Cells for Python via .NET创建图表时非常有用。
图表对象
Aspose.Cells for Python via .NET提供了一组特殊的类,位于 Aspose.Cells.Charts 命名空间内,用于创建Aspose.Cells for Python via .NET支持的图表。这些类用于创建图表对象,它们是图表构建的基础。下列列出了这些图表对象:
- Series,图表中的单个数据系列。
- Axis,图表的坐标轴。
- Chart,单个Excel图表。
- ChartArea,工作表中的图表区域。
- ChartDataTable,图表数据表。
- ChartFrame,图表中的框架对象。
- ChartPoint,图表中系列中的单个点。
- ChartPointCollection,包含一个系列中所有点的集合。
- Charts,Chart对象的集合。
- DataLabels,指定系列的所有DataLabel对象的集合。
- FillFormat,形状的填充格式。
- Floor,3D图表的底板。
- Legend,图表图例。
- Line,图表线条。
- SeriesCollection,Series对象的集合。
- TickLabels,与图表轴上的刻度标记相关联的刻度标签。
- Title,图表或坐标轴的标题。
- Trendline,图表中的趋势线。
- TrendlineCollection, 指定数据系列的所有趋势线对象的集合。
- Walls, 3D 图表的墙壁。
使用图表对象
如上所述,所有的图表对象都是它们各自类的实例,并提供特定的属性和方法来执行特定的任务。使用图表对象来创建图表。
使用 charts 集合可以向工作表添加任何类型的图表。 charts 集合中的每个项目代表一个 Chart 对象。 Chart 对象封装了所有其他图表对象,以自定义图表的外观。下一部分介绍如何使用一些基本的图表对象创建一个简单的图表。
使用Aspose.Cells for Python via .NET创建图表
步骤:
- 使用 Cell 对象的 put_value 方法将一些数据添加到工作表单元格中。 这将被用作图表的数据源。
- 通过调用 charts 集合的 add 方法在工作表中添加一个图表,该方法封装在 Worksheet 对象中。
- 使用 ChartType 枚举指定图表的类型。 例如,下面的示例使用 ChartType.PYRAMID 值作为图表类型。
- 通过传递其索引从 charts 集合中访问新的 Chart 对象。
- 使用封装在 Chart 对象中的任何绘图对象来管理图表。 下面的示例使用 SeriesCollection 绘图对象指定图表的数据源。
在向图表添加数据源时,数据源可以是单元格范围(如"A1:C3")、非连续单元格序列(如"A1, A3, A5")或值序列(如"1,2,3")。
这些一般步骤可以帮助您创建任何类型的图表。使用不同的绘图对象创建不同的图表。
可以用Aspose.Cells for Python via .NET创建多种不同类型的图表。Aspose.Cells for Python via .NET支持的所有标准图表在一个名为 Aspose.Cells.Charts.ChartType 的枚举中预定义。
预定义的图表类型包括:
图表类型 | 描述 |
---|---|
Column | 表示簇状柱形图表 |
ColumnStacked | 代表堆积柱状图 |
Column100PercentStacked | 代表100%堆积柱状图 |
Column3DClustered | 代表3D分组柱状图 |
Column3DStacked | 表示3D堆叠柱形图 |
Column3D100PercentStacked | 表示3D 100%堆叠柱形图 |
Column3D | 表示3D柱形图 |
Bar | 表示分组条形图 |
BarStacked | 表示堆叠条形图 |
Bar100PercentStacked | 表示100%堆叠条形图 |
Bar3DClustered | 表示3D分组条形图 |
Bar3DStacked | 表示3D堆叠条形图 |
Bar3D100PercentStacked | 表示3D 100%堆叠条形图 |
Line | 表示折线图 |
LineStacked | 表示堆叠折线图 |
Line100PercentStacked | 表示100%堆叠折线图 |
LineWithDataMarkers | 表示带有数据标记的折线图 |
LineStackedWithDataMarkers | 表示带有数据标记的堆叠折线图 |
Line100PercentStackedWithDataMarkers | 表示带有数据标记的100%堆叠折线图 |
Line3D | 表示3D折线图 |
Pie | 表示饼图 |
Pie3D | 表示3D饼图 |
PiePie | 表示饼图中的饼图 |
PieExploded | 表示爆炸饼图 |
Pie3DExploded | 表示3D饼图(爆炸式) |
PieBar | 表示饼图的条形图 |
Scatter | 代表散点图 |
ScatterConnectedByCurvesWithDataMarker | 代表用曲线连接的散点图,带有数据标记 |
ScatterConnectedByCurvesWithoutDataMarker | 代表用曲线连接的散点图,没有数据标记 |
ScatterConnectedByLinesWithDataMarker | 代表用线连接的散点图,带有数据标记 |
ScatterConnectedByLinesWithoutDataMarker | 代表用线连接的散点图,没有数据标记 |
Area | 表示面积图 |
AreaStacked | 表示堆叠面积图 |
Area100PercentStacked | 表示百分比堆叠面积图 |
Area3D | 表示3D面积图 |
Area3DStacked | 表示3D堆叠面积图 |
Area3D100PercentStacked | 表示3D百分比堆叠面积图 |
Doughnut | 表示圆环图 |
DoughnutExploded | 表示爆炸式环形图 |
Radar | 代表雷达图 |
RadarWithDataMarkers | 代表带有数据标记的雷达图 |
RadarFilled | 表示填充雷达图 |
Surface3D | 表示3D曲面图 |
SurfaceWireframe3D | 代表三维线框表面图表 |
SurfaceContour | 表示等高线图表 |
SurfaceContourWireframe | 表示线框等高线图表 |
Bubble | 表示气泡图表 |
Bubble3D | 表示3D气泡图表 |
Cylinder | 表示圆柱图表 |
CylinderStacked | 表示堆叠圆柱图表 |
Cylinder100PercentStacked | 表示100%堆叠圆柱图表 |
CylindericalBar | 代表圆柱棒图表 |
CylindericalBarStacked | 代表堆叠圆柱棒图表 |
CylindericalBar100PercentStacked | 代表百分比堆叠圆柱棒图表 |
CylindericalColumn3D | 代表3D圆柱柱状图表 |
Cone | 表示圆锥图表 |
ConeStacked | 表示堆叠圆锥图表 |
Cone100PercentStacked | 表示100%堆叠圆锥图表 |
ConicalBar | 表示圆锥形条形图 |
ConicalBarStacked | 表示堆叠圆锥形条形图 |
ConicalBar100PercentStacked | 表示100%堆叠圆锥形条形图 |
ConicalColumn3D | 表示3D圆锥形柱形图 |
Pyramid | 表示金字塔图表 |
PyramidStacked | 表示堆叠金字塔图表 |
Pyramid100PercentStacked | 代表100%的堆叠金字塔图表 |
PyramidBar | 代表金字塔柱状图 |
PyramidBarStacked | 代表堆叠金字塔柱状图 |
PyramidBar100PercentStacked | 代表100%堆叠金字塔柱状图 |
PyramidColumn3D | 代表3D金字塔柱图 |
当您将一系列单元格指定为数据源时,只能从左上到右下设置范围。例如,“A1:C3”是有效的,而“C3:A1”是无效的。
|
金字塔图
执行示例代码后,将在工作表中添加一个金字塔图表。
from aspose.cells import Workbook | |
from aspose.cells.charts import ChartType | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Instantiating a Workbook object | |
workbook = Workbook() | |
# Adding a new worksheet to the Excel object | |
sheetIndex = workbook.worksheets.add() | |
# Obtaining the reference of the newly added worksheet by passing its sheet index | |
worksheet = workbook.worksheets[sheetIndex] | |
# Adding sample values to cells | |
worksheet.cells.get("A1").put_value(50) | |
worksheet.cells.get("A2").put_value(100) | |
worksheet.cells.get("A3").put_value(150) | |
worksheet.cells.get("B1").put_value(4) | |
worksheet.cells.get("B2").put_value(20) | |
worksheet.cells.get("B3").put_value(50) | |
# Adding a chart to the worksheet | |
chartIndex = worksheet.charts.add(ChartType.PYRAMID, 5, 0, 15, 5) | |
# Accessing the instance of the newly added chart | |
chart = worksheet.charts[chartIndex] | |
# Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3" | |
chart.n_series.add("A1:B3", True) | |
# Saving the Excel file | |
workbook.save(dataDir + "output.xls") |
折线图
在上面的示例中,仅将ChartType更改为Line即可创建折线图。完整的源代码如下所示。执行代码后,将在工作表中添加一个折线图。
from aspose.cells import Workbook | |
from aspose.cells.charts import ChartType | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Instantiating a Workbook object | |
workbook = Workbook() | |
# Adding a new worksheet to the Excel object | |
sheetIndex = workbook.worksheets.add() | |
# Obtaining the reference of the newly added worksheet by passing its sheet index | |
worksheet = workbook.worksheets[sheetIndex] | |
# Adding sample values to cells | |
worksheet.cells.get("A1").put_value(50) | |
worksheet.cells.get("A2").put_value(100) | |
worksheet.cells.get("A3").put_value(150) | |
worksheet.cells.get("B1").put_value(4) | |
worksheet.cells.get("B2").put_value(20) | |
worksheet.cells.get("B3").put_value(50) | |
# Adding a chart to the worksheet | |
chartIndex = worksheet.charts.add(ChartType.LINE, 5, 0, 15, 5) | |
# Accessing the instance of the newly added chart | |
chart = worksheet.charts[chartIndex] | |
# Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3" | |
chart.n_series.add("A1:B3", True) | |
# Saving the Excel file | |
workbook.save(dataDir + "output.xls") |
气泡图
为了创建气泡图,必须将ChartType设置为ChartType.BUBBLE,并相应地设置一些额外属性,例如BubbleSizes,Values & XValues。执行以下代码后,将在工作表中添加一个气泡图。
带有数据标记的折线图
要创建带有数据标记的折线图,必须将ChartType设置为ChartType.LineWithDataMarkers,并相应地设置一些额外属性,如背景区域、Series Markers、Values & XValues。执行以下代码后,将在工作表中添加带有数据标记的折线图。
from aspose.cells import SaveFormat, Workbook | |
from aspose.cells.charts import ChartType, FormattingType | |
from aspose.pydrawing import Color | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# Instantiate a workbook | |
workbook = Workbook() | |
# Access first worksheet | |
worksheet = workbook.worksheets[0] | |
# Set columns title | |
worksheet.cells.get(0, 0).value = "X" | |
worksheet.cells.get(0, 1).value = "Y" | |
# Create random data and save in the cells | |
for i in range(1, 21): | |
worksheet.cells.get(i, 0).value = i | |
worksheet.cells.get(i, 1).value = 0.8 | |
for i in range(21, 41): | |
worksheet.cells.get(i, 0).value = i - 20 | |
worksheet.cells.get(i, 1).value = 0.9 | |
# Add a chart to the worksheet | |
idx = worksheet.charts.add(ChartType.LINE_WITH_DATA_MARKERS, 1, 3, 20, 20) | |
# Access the newly created chart | |
chart = worksheet.charts[idx] | |
# Set chart style | |
chart.style = 3 | |
# Set autoscaling value to true | |
chart.auto_scaling = True | |
# Set foreground color white | |
chart.plot_area.area.foreground_color = Color.white | |
# Set Properties of chart title | |
chart.title.text = "Sample Chart" | |
# Set chart type | |
chart.type = ChartType.LINE_WITH_DATA_MARKERS | |
# Set Properties of categoryaxis title | |
chart.category_axis.title.text = "Units" | |
# Set Properties of nseries | |
s2_idx = chart.n_series.add("A2: A2", True) | |
s3_idx = chart.n_series.add("A22: A22", True) | |
# Set IsColorVaried to true for varied points color | |
chart.n_series.is_color_varied = True | |
# Set properties of background area and series markers | |
chart.n_series[s2_idx].area.formatting = FormattingType.CUSTOM | |
chart.n_series[s2_idx].marker.area.foreground_color = Color.yellow | |
chart.n_series[s2_idx].marker.border.is_visible = False | |
# Set X and Y values of series chart | |
chart.n_series[s2_idx].x_values = "A2: A21" | |
chart.n_series[s2_idx].values = "B2: B21" | |
# Set properties of background area and series markers | |
chart.n_series[s3_idx].area.formatting = FormattingType.CUSTOM | |
chart.n_series[s3_idx].marker.area.foreground_color = Color.green | |
chart.n_series[s3_idx].marker.border.is_visible = False | |
# Set X and Y values of series chart | |
chart.n_series[s3_idx].x_values = "A22: A41" | |
chart.n_series[s3_idx].values = "B22: B41" | |
# Save the workbook | |
workbook.save(outputDir + r"LineWithDataMarkerChart.xlsx", SaveFormat.XLSX) |