Working with Line Charts


Important:  The following API methods are currently not published and are subject to change in future versions of Ansys Mechanical.


The following examples examine how you can change the display of given Line Chart datasets, perform operations on datasets, as well as import, export, and filter datasets.

Example 1: Create ChartVariable and Dataset2D Objects and Display Chart

This API creates data using the variable ChartVariable, plots the data, and displays it as a chart titled "Straight Line" as shown.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
var1 = a.ChartVariable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "m", "Length")
var2 = a.ChartVariable([1010, 2011, 3012, 4013, 5014, 6015, 7016, 8017, 9018, 10019, 11020])
ds1 = a.Dataset2D("Straight Line", var1, var2)
chart.Update([ds1])

Example 2: Change the Display Options for a Dataset

This API changes the display of the plotted data from the previous example.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
var1 = a.ChartVariable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "m", "Length")
var2 = a.ChartVariable([1010, 2011, 3012, 4013, 5014, 6015, 7016, 8017, 9018, 10019, 11020])
ds1 = a.Dataset2D("straight line", var1, var2)
disp_opts1 = a.Dataset2DDisplayOptions()
disp_opts1.LineType = Chart2DDatasetLineType.LinesAndMarkers
disp_opts1.Color = Chart2DDatasetColor.Blue
disp_opts1.LineThickness = 4
disp_opts1.ChangeMarkerShape = Chart2DDatasetMarkerShape.Square
disp_opts1.MarkerSize = 15
ds1.DisplayOptions = disp_opts1

Example 3: Perform an Operation to Create a New Dataset

This API performs an operation on a given dataset to generate a new dataset.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
var1 = a.ChartVariable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "m", "Length")
var2 = a.ChartVariable([1010, 2011, 3012, 4013, 5014, 6015, 7016, 8017, 9018, 10019, 11020])
ds1 = a.Dataset2D("Straight Line", var1, var2)
ds2 = a.ChartOperations.Integration(ds1)
disp1 = a.Dataset2DDisplayOptions(datasetColor = Chart2DDatasetColor.Blue)
ds2.DisplayOptions = disp1
chart.Update([ds1, ds2])

Note:  The chart.Update([]) method accepts any number of datasets.


Example 4: Import Data from a Tree Object

This API imports data from an existing tree object to create a dataset.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
he_obj = DataModel.GetObjectsByName("Hourglass Energy")[0]
dataset_collection = chart.ImportFromObjects([he_obj])
chart.Update(dataset_collection)

Example 5: Import Data from a Text File

This API imports data from a text file to create a dataset.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
ds_imp = a.Dataset2D()
ds_imp.ImportFromFile(r"C:/chartdata.txt")
chart.Update([ds_imp])

Example 6: Export Data to a Text File

This API exports a dataset to a text file.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
var1 = a.ChartVariable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "m", "Length")
var2 = a.ChartVariable([1010, 2011, 3012, 4013, 5014, 6015, 7016, 8017, 9018, 10019, 11020])
ds1 = a.Dataset2D("straight line", var1, var2)
ds1.ExportToFile(r"C:/dataset.txt")

Example 7: Filter a Dataset

This API filters a dataset to create a new dataset.

import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject
ds_imp = a.Dataset2D()
ds_imp.ImportFromFile(r"C:/chartdata.txt")
ds_fil = a.ChartFilters.Butterworth(ds_imp, 120)
ds_fil.DisplayOptions = a.Dataset2DDisplayOptions(datasetColor = Chart2DDatasetColor.Blue)
chart.Update([ds_imp, ds_fil])

Note:  Each filter comes with its own requirements of input parameters, such as Cutoff Frequency for Butterworth.


Example 8: Display Multiple Curves with Numerous Display Options

This API displays multiple curves with a variety of display options.

import math
import Ansys.Mechanical.DataModel.Utilities as a
chart = Tree.FirstActiveObject

COUNT = 200
CYCLES = 5

n_vals = list(range(COUNT))
scales = [n / float(COUNT) for n in n_vals]
angles = [n * (CYCLES * 2 * math.pi) / float(COUNT) for n in n_vals]

var_a = a.ChartVariable(angles, 'rad', 'Angle')
var_1 = a.ChartVariable([math.cos(ang) for ang in angles])
var_2 = a.ChartVariable([-math.cos(ang) for ang in angles])
var_3 = a.ChartVariable([s * math.cos(ang) for s, ang in zip(scales, angles)])
var_4 = a.ChartVariable([-s * math.cos(ang) for s, ang in zip(scales, angles)])

ds1 = a.Dataset2D("Cosine Curve", var_a, var_1)
disp1 = a.Dataset2DDisplayOptions()
disp1.LineType = Chart2DDatasetLineType.LinesAndMarkers
disp1.Color = Chart2DDatasetColor.Red
disp1.LineThickness = 3.0
disp1.MarkerShape = Chart2DDatasetMarkerShape.Triangle
disp1.MarkerSize = 10
ds1.DisplayOptions = disp1

ds2 = a.Dataset2D("Neg Cosine Curve", var_a, var_2)
disp2 = a.Dataset2DDisplayOptions()
disp2.LineType = Chart2DDatasetLineType.MarkersOnly
disp2.Color = Chart2DDatasetColor.Green
disp2.MarkerShape = Chart2DDatasetMarkerShape.Square
disp2.MarkerSize = 5
ds2.DisplayOptions = disp2

ds3 = a.Dataset2D("Ramped Cosine Curve", var_a, var_3)
disp3 = a.Dataset2DDisplayOptions()
disp3.LineType = Chart2DDatasetLineType.LinesOnly
disp3.Color = Chart2DDatasetColor.Blue
disp3.LineThickness = 5.0
ds3.DisplayOptions = disp3

ds4 = a.Dataset2D("Ramped Neg Cosine Curve", var_a, var_4)
disp4 = a.Dataset2DDisplayOptions()
disp4.LineType = Chart2DDatasetLineType.LinesAndMarkers
disp4.Color = Chart2DDatasetColor.Yellow
disp4.LineThickness = 10.0
disp4.MarkerShape = Chart2DDatasetMarkerShape.PointStyleX
disp4.MarkerSize = 10
ds4.DisplayOptions = disp4

chart.Update([ds1,ds2,ds3,ds4])