1.生成数据 第15章相关问题
1.绘制简单的折线图
对应书上的15章275页.这里书上关于\(subplot()\)函数解释地比较模糊,这里详细解释一下
先介绍这篇,写得很好csdn的解释
(1) 首先\(subplot()、subplots()\)均用于\(Matplotlib\)绘制多图
(2) $subplots $一次性创建并返回所有的子图和其 axe 对象,这个菜鸟驿站的解释很迷,完全看不懂
(3) fig-------即figure,画窗
ax-------即axex,画窗中创建的笛卡尔坐标区
fig, ax = plt.subplots()
(4) 上面的代码是下面代码的精简形式:
fig = plt.figure()#首先调用plt.figure()创建了一个**画窗对象fig**
ax = fig.add_subplot(111)#然后再对fix创建默认的坐标区(一行一列一个坐标区)
(5) 111的解释看这篇更详细111的解释
参数111,可以写为111,也可以用逗号分隔开,写为(1,1,1);当然,官方规定,当子区域不超过9个的时候,才可以简写为111。其中,第一个参数代表子图的行数,第二个参数代表该行图像的列数,第三个参数代表每行的第几个图像。111是默认的参数
2.使用内置样式
按书上写代码不奏效,这里似乎有代码先后执行顺序要求,我们必须把\(plt.style.use('seaborn')\)代码放在最前面,也就是\(import\)的下面不能样式不能显示,也看到博客说中文设置必须在样式设置的后面
# Description:测试Matplotlib的功能
# 开发时间: 2022/11/21 11:19
import matplotlib.pyplot as plt
#使用plot的内置样式
#plt.style.use(‘seaborn’)这一句必须要在中文字体的代码前面执行,因为中文字体的设置也要遵循seaborn的内置样式。
plt.style.use('seaborn')
#1.绘制简单的折线图
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
fig,ax = plt.subplots()
#linewidth设置plot()绘制线条的粗细
ax.plot(input_values,squares,linewidth=3)
#设置中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#设置图表的标题并给横纵坐标加上标签
ax.set_title("平方数",fontsize=24)
ax.set_xlabel("值",fontsize=14)
ax.set_ylabel("值的平方",fontsize=14)
#设置刻度标记的大小
ax.tick_params(axis='both',labelsize=14)
plt.show()
2.1 import理解
有点搞不懂\(import\)的机制,这里采了一些别人的理解
import 语句结合了两个操作:
(1) 搜索命名模块。通过传入合适的参数调用 import() 实现。
(2) 将搜索的结果绑定到本地命名空间。 import() 的返回值用作命名空间绑定操作。
那么\(__import()__\)是如何查找\(module\)的呢?
import 执行时,会尝试使用以下顺序查找 module:
(1) 解析器首先尝试搜索自身内置的 module
(2) 如果找不到,就会根据 sys.path 的顺序查找;
(3) py 执行文件本身所在文件;
(4) PYTHONPATH 环境变量;
(5) python 默认的安装依赖位置
3.自动计算数据
这节引入了一个axis函数,可以设置坐标范围
语法:\(matplotlib.pyplot.axis(*args, emit=True, **kwargs)\)
axis()调用方式:
- \(axis()\):不传递任何参数相当于坐标轴采用自动缩放(autoscale)方式,由matplotlib根据数据系列自动配置坐标轴范围和刻度
- \(axis([xmin, xmax, ymin, ymax])\):传递一个由xmin, xmax, ymin, ymax构成的四元序列(列表、元组等)。
- \(axis(option)\): 传递option字符串或布尔值,作用如下:有点多,直接参考大佬博客option选项
还有一个函数是\(tick_params()\)
语法:\(plt.tick\_params(axis=‘both’, **kwargs)\)
参数:
axis : 可选{‘x’, ‘y’, ‘both’} ,选择对哪个轴操作,默认是’both’
reset : bool,如果为True,则在处理其他参数之前将所有参数设置为默认值。 它的默认值为False。
which : 可选{‘major’, ‘minor’, ‘both’} 选择对主or副坐标轴进行操作
direction/tickdir : 可选{‘in’, ‘out’, ‘inout’}刻度线的方向
size/length : float, 刻度线的长度
width : float, 刻度线的宽度
color : 刻度线的颜色,我一般用16进制字符串表示,eg:’#EE6363’
pad : float, 刻度线与刻度值之间的距离
labelsize : float/str, 刻度值字体大小
labelcolor : 刻度值颜色
colors : 同时设置刻度线和刻度值的颜色
zorder : float ,Tick and label zorder.
bottom, top, left, right : bool, 分别表示上下左右四边,是否显示刻度线,True为显示
labelbottom, labeltop, labelleft, labelright :bool, 分别表示上下左右四边,是否显示刻度值,True为显示
labelrotation : 刻度值逆时针旋转给定的度数,如20
gridOn: bool ,是否添加网格线; grid_alpha:float网格线透明度 ; grid_color: 网格线颜色; grid_linewidth:float网格线宽度; grid_linestyle: 网格线型
tick1On, tick2On : bool分别表表示是否显示axis轴的(左/下、右/上)or(主、副)刻度线
label1On,label2On : bool分别表表示是否显示axis轴的(左/下、右/上)or(主、副)刻度值
参考了大佬的博客