首页/文章/ 详情

ANSA二次开发_Python基础-基于matplotlib的模型厚度分布图

3月前浏览3068


matplotlib是Python中的绘图库,它提供了大量的工具来创建静态、动态和交互式的可视化图形。

需要注意的是这个库与自带的guitk库会起冲突,官方文档建议是不直接将所生成图表的显示出来,而是通过保存到文件中,再通过guitk库提供的控件显示图片。
并且直接调用plot.show也是无法显示,会给出如下提示。

 UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
添加这行代码后依然会出现如下的错误,后续还有解决方案,重装修改解释器,但是重装后是否会导致其他问题就不得而知了,所以就按照官方文档开发吧。


 matplotlib.use('TkAgg') #No module named '_tkinter'
matplotlib在ANSA中使用较少,使用场景可以用于单元质量统计,模型厚度分布等相关。主要是后处理开发中使用,在这里作为基础模块一同介绍下。

本篇文章的案例,通过ANSA绘制模型厚度条形图,弥补deck info的功能。
统计模型的厚度分布,这个需求,属实是为了这碟醋,包了一顿饺子,哈哈哈。


常用的matplotlib方法

1. 折线图(Line plot) 

 用于展示数据随时间或有序类别变化的趋势。

2. 散点图(Scatter plot) 

 用于展示两个变量之间的关系,观察数据点的分布。

3. 条形图(Bar chart) 

 用于比较不同类别之间的数值大小。可以是垂直的(plt.bar)或水平的(plt.barh)。

4. 直方图(Histogram) 

 用于展示数据的分布情况,通过数据分组(bins)来观察频率分布。

5. 饼图(Pie chart) 

 用于展示各部分占整体的比例关系。

6. 箱型图(Box plot) 

 用于展示数据的分布情况,包括中位数、四分位数和异常值。

7. 等高线图(Contour plot) 

 用于展示三维数据的二维等值投影,常用于地理数据的可视化。

8. 3D 图形 - 包括3D 线图、3D 散点图、3D 条形图等,用于展示三维空间中的数据关系。

9. 热图(Heatmap) 

 用于展示矩阵数据,颜色深浅表示数据大小,常用于展示相关性矩阵。

10. 极坐标图(Polar plot) 

 用极坐标系统展示数据,适用于周期性数据的展示。

11. 误差条形图(Error bar plot) 

 用于展示数据的变异情况,通过误差线表示数据的不确定性。

12. 堆叠条形图(Stacked bar chart) 

 类似于条形图,但是将多个类别的数据堆叠在一起,用于展示总量及各部分的比例。

13. 面积图(Area plot) 

 类似于线图,但是线下区域被填充颜色,用于展示随时间变化的数量累积效果。

14. 阶梯图(Step plot) 

 类似于线图,但是数据点之间用水平和垂直线段连接,常用于展示离散变化。

15. 棉棒图(Stem plot) 

 用于展示每个数据点的大小,类似于散点图,但每个点有一个从基线延伸的线段。

16. 雷达图(Radar chart) 

 用于展示多变量数据,每个变量的值沿着轴线展示,常用于性能分析。


下面是针对上述列举的图形类型的matplotlib代码示例:

1. 线图(Line plot)










import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.plot(x, y)plt.title('Line Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()

2. 散点图(Scatter plot)









import matplotlib.pyplot as pltx = [5, 7, 8, 5, 6, 7, 9, 2, 3, 4, 4, 4, 2, 6, 3, 6, 8, 6]y = [7, 4, 3, 9, 1, 3, 2, 5, 2, 4, 8, 7, 1, 6, 4, 9, 7, 8]plt.scatter(x, y)plt.title('Scatter Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()

3. 条形图(Bar chart)









import matplotlib.pyplot as pltcategories = ['A', 'B', 'C', 'D']values = [23, 45, 56, 78]plt.bar(categories, values)plt.title('Bar Chart')plt.xlabel('Categories')plt.ylabel('Values')plt.show()

4. 直方图(Histogram)









import matplotlib.pyplot as pltimport numpy as npdata = np.random.randn(1000)plt.hist(data, bins=30)plt.title('Histogram')plt.xlabel('Value')plt.ylabel('Frequency')plt.show()

5. 饼图(Pie chart)







import matplotlib.pyplot as pltsizes = [215, 130, 245, 210]labels = ['A', 'B', 'C', 'D']plt.pie(sizes, labels=labels, autopct='%1.1f%%')plt.title('Pie Chart')plt.show()

6. 箱型图(Box plot)







import matplotlib.pyplot as pltimport numpy as npdata = np.random.rand(10, 4)plt.boxplot(data)plt.title('Box Plot')plt.show()

7. 等高线图(Contour plot)












import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-3.0, 3.0, 100)y = np.linspace(-3.0, 3.0, 100)X, Y = np.meshgrid(x, y)Z = np.sin(X**2 + Y**2)plt.contour(X, Y, Z)plt.title('Contour Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()

8. 3D 散点图












from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.add_subplot(111, projection='3d')x = np.random.standard_normal(100)y = np.random.standard_normal(100)z = np.random.standard_normal(100)ax.scatter(x, y, z)ax.set_title('3D Scatter Plot')plt.show()

9. 热力图(Heatmap)











import numpy as npimport matplotlib.pyplot as pltimport seaborn as sns; sns.set()  # 使用seaborn样式# 生成数据data = np.random.rand(10, 12)# 绘制热图plt.figure(figsize=(8, 6))sns.heatmap(data, annot=True, fmt=".1f", linewidths=.5)plt.title('Heatmap')plt.show()

10. 极坐标图(Polar plot)










import numpy as npimport matplotlib.pyplot as plt# 生成数据r = np.arange(0, 2, 0.01)theta = 2 * np.pi * rplt.subplot(111, polar=True)plt.plot(theta, r)plt.title('Polar Plot')plt.show()

11. 误差条形图(Error bar plot)










import matplotlib.pyplot as pltimport numpy as npx = np.arange(0.1, 4, 0.5)y = np.exp(-x)# 定义误差error = 0.1 + 0.2 * np.sqrt(x)plt.errorbar(x, y, yerr=error, fmt='-o')plt.title('Error Bar Plot')plt.show()

12. 堆叠条形图(Stacked bar chart)
















import matplotlib.pyplot as pltimport numpy as npN = 5menMeans = (20, 35, 30, 35, 27)womenMeans = (25, 32, 34, 20, 25)ind = np.arange(N)    width = 0.35       plt.bar(ind, menMeans, width, label='Men')plt.bar(ind, womenMeans, width, bottom=menMeans, label='Women')plt.ylabel('Scores')plt.title('Scores by group and gender')plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))plt.yticks(np.arange(0, 81, 10))plt.legend()plt.show()

13. 面积图(Area plot)









import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.fill_between(x, y)plt.title('Area Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()

14. 阶梯图(Step plot)









import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.step(x, y)plt.title('Step Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()

15. 棉棒图(Stem plot)










import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.1, 2 * np.pi, 10)y = np.cos(x)plt.stem(x, y)plt.title('Stem Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()


16. 雷达图(Radar chart)

















import numpy as npimport matplotlib.pyplot as pltfrom math import pi# 设置数据categories = ['A', 'B', 'C', 'D', 'E']values = [4, 3, 2, 5, 4]values += values[:1]  # 闭合图形# 计算角度angles = [n / float(len(categories)) * 2 * pi for n in range(len(categories))]angles += angles[:1]# 绘图ax = plt.subplot(111, polar=True)plt.xticks(angles[:-1], categories)ax.plot(angles, values)ax.fill(angles, values, 'teal', alpha=0.1)plt.show()




来源:TodayCAEer
ACT二次开发ANSApythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:3月前
TodayCAEer
本科 签名征集中
获赞 18粉丝 28文章 243课程 0
点赞
收藏
作者推荐

ANSA二次开发_配置VScode自动补全环境-提供原厂补全包

新版的ANSA已进一步简化了Python代码自动补全的配置流程,只需要在IDE软件中,添加补全包路径即可。官方也在哔哩哔哩视频中也提到,未来不再更新ScriptEdit编辑器(话说这么多年也没感觉有什么更新),推荐使用vscode编辑器进行开发。所以,让我们一起了解如何配置VSCode开发环境吧。首先,通过文件>首选项>设置,在上方搜索栏,搜索autocomplete,然后点击在setting.json中编辑,软件会打开配置文件。在首次创建自动补全时,应该自动创建python.autoComplete.extraPaths和python.analysis.extraPaths的key,只需要将安装目录下的补全包路径填入,保存设置后即可立即享受自动补全的便利,就是这么简单快捷迅速。"python.autoComplete.extraPaths":["....autocomplete\\py_dev\\pydev_ansa"],"python.analysis.extraPaths":["....autocomplete\\py_dev\\pydev_ansa"]接下来便可以更轻松地进行代码创作和开发探索。那么问题来了,补全包怎么来。后台发送关键字“补全包”·END·点亮【在看】,与朋友们共勉!来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈