数学建模——Python绘图(可视化)

一、基础绘图

1、折线图(matplotlib)

具体步骤参考本人之前的文章

from matplotlib import pyplot as plt

x = range(11,31)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

#画两条线,并写明哪条线表示什么,设置线条样式
plt.plot(x,y_1,label="得分1",color="coral",linewidth=5)
plt.plot(x,y_2,label="得分2",color="cyan",linestyle='--')

#设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
#plt.yticks(range(0,9))

#显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei',]

#绘制网格,alpha设置网格透明度
plt.grid(alpha=0.5,linestyle=':')

#添加图例(在指定位置显示线条对应的含义)
plt.legend(loc="upper left")
plt.show()

2、条形图

from matplotlib import pyplot as plt

a = []
b = []

plt.figure(figsize=(20,8),dpi=80)

#绘制条形图
plt.bar(range(len(a)),b,width=0.3)

#设置字符串到x轴
plt.xticks(range(len(a)),a,rotation=90)
plt.rcParams['font.sans-serif'] = ['SimHei',]
plt.show()

多条条形图:

from matplotlib import pyplot as plt

a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

bar_width = 0.2

x_14 = list(range(len(a)))
x_15 = [i+bar_width for i in x_14]
x_16 = [i+bar_width*2 for i in x_14]

plt.figure(figsize=(8,8),dpi=80)

plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

plt.legend()

plt.xticks(x_15,a)

plt.rcParams['font.sans-serif'] = ['SimHei',]
plt.show()

3、散点图

from matplotlib import pyplot as plt

y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

x_3 = range(1,32)
x_10 = range(51,82)

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

#散点图和折线图的区别
plt.scatter(x_3,y_3,label="3月份",color="red")
plt.scatter(x_10,y_10,label="10月份")

_x = list(x_3)+list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels += ["10月{}日".format(i-50) for i in x_10]
plt.xticks(_x[::3],_xtick_labels[::3],rotation=90)

#添加图例
plt.legend(loc="upper left")

#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("标题")

plt.rcParams['font.sans-serif'] = ['SimHei',]

plt.show()

4、饼图

平面基础饼图

import numpy as np
import matplotlib.pyplot as plt

# 数据
size = [34,20,20,20,6]
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei',]
# 绘图(标明各扇形含义)
plt.pie(size, labels=["Windows", "MAC", "Linux", "Android", "Other"])
#设置标题
plt.title("手机系统占比分析")

plt.show()

立体饼图

import matplotlib.pyplot as plt

data = [2052380, 11315444, 20435242, 7456627, 3014264, 1972395, 185028]
# 数据标签
labels = ['none', 'primary', 'junior', 'senior', 'specialties', 'bachelor', 'master']
# 各区域颜色
colors = ['red', 'orange', 'yellow', 'green', 'purple', 'blue', 'black']
# 数据计算处理
sizes = [data[0] / Num * 100, data[1] / Num * 100, data[2] / Num * 100, data[3] / Num * 100, data[4] / Num * 100,
         data[5] / Num * 100, data[6] / Num * 100]
# 设置突出模块偏移值
expodes = (0, 0, 0.1, 0, 0, 0, 0)
# 设置绘图属性并绘图
plt.pie(sizes, explode=expodes, labels=labels, shadow=True, colors=colors)
## 用于显示为一个长宽相等的饼图
plt.axis('equal')
# 保存并显示
# plt.savefig('picture/step3/fig3.png')
plt.show()

5、百分比堆积

### AxGlyph 数学建模绘图软件介绍 AxGlyph 是一款专为科研人员设计的矢量图表图形绘制编辑软件[^1]。此款软件具备强大的绘图能力,能够满足多种类型的科学绘图需求,包括但不限于流程图、曲线图、圆饼图、雷达图、点线图、思维导图、平面几何图、电子线路图以及3D图像等。 对于数学建模而言,AxGlyph 提供了一个直观的操作界面来创建高质量的数据可视化图形,有助于更清晰地表达复杂的概念和数据分析结果。特别是在处理函数关系图时,推荐使用不同颜色区分多条曲线以增强可读性和美观度[^2]。 此外,在撰写数学建模报告过程中,利用像 AxGlyph 这样的专业制图工具可以帮助更好地呈现研究发现,并遵循学术写作中的排版规范,比如确保图片标题位于下方并附带编号(即所谓的“表上图下”原则)。这不仅提升了文档的专业外观,也使得读者更容易理解作者意图传达的信息[^3]。 #### 使用方法概述 虽然具体操作会因个人项目差异而有所不同,但以下是基于 AxGlyph 的一些通用指导: - **启动程序**:安装完成后打开应用程序进入主界面。 - **新建文件/导入现有数据集**:可以选择空白模板开始新作品或是加载已有CSV/XLSX格式的数据源用于快速生成相应图表。 - **选择合适的图表类型**:根据实际应用场景挑选最适配的表现形式;例如当涉及到时间序列预测问题时可能更适合采用折线图而非柱状图。 - **自定义样式调整**:通过右侧属性栏修改线条粗细、填充色以及其他视觉效果直至满意为止。 - **保存与导出成果**:完成所有编辑工作之后记得及时存盘以防丢失进度,同时支持EPS, PDF等多种高分辨率输出选项方便后续打印或嵌入其他出版物中。 ```python # Python 示例代码片段仅作为说明用途,并非直接关联到 AxGlyph 软件本身的功能实现 import matplotlib.pyplot as plt plt.plot([1, 2, 3], [4, 5, 6]) plt.title('Sample Plot') plt.xlabel('X Axis Label') plt.ylabel('Y Axis Label') plt.show() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值