Python画图步骤--使用matplotlib

如果你是新手,不会使用Python作图,那么看完这篇文章,你将会掌握作图的步骤和规律。

第一步:导入包
import matplotlib.pyplot as plt
第二步:创建Figure
fig = plt.figure()
其中,可选参数figsize可以控制的图片大小,fig = plt.figure(figsize=(8,4))
第三步:创建子图
不能通过空Figure绘图,需调用add_subplot创建一个或多个subplot:
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)

三个子图
其中,ax1 = fig.add_subplot(2,2,1) 的参数表示构建2x2的子图中的第1个。

当然,如果我们只需要写画一个图的话,只要ax = fig.add_subplot(1,1,1)即可。
第四步:画曲线图
ax.plot(x, y, 'g--')
x,y表示对应要作图的x轴和y轴的坐标,‘g–’ 是用来指定颜色和线型,这里为绿色虚线。
也可以通过这种显示的表达:
ax.plot(x, y, linestyle='--', color='g')
第五步:显示图形
plt.show()
如果在调用该函数时,发现并没有显示图片的话,可以在创建figure前加上plt.close().

合并代码:

import numpy as np
#第一步:导入matplotlib包
import matplotlib.pyplot as plt

#构造一些二维的点,你可以使用自己的数据
x = np.linspace(0, 2*np.pi, 50)
y = np.sin(x)

#第二步:创建Figure
fig = plt.figure(figsize=(8,6))
#第三步:创建子图 
ax = fig.add_subplot(1, 1, 1)
#第四步:画曲线图
ax.plot(x, y, 'g--')
#第五步:显示图形 
plt.show()

初步的图
其他
上面几步可以做出最基本的图,下面可以进行更好的修饰图片:

  • 图片背景颜色
    plt.figure(facecolor='#B7B7B7')控制外面大图的背景,颜色代码可点击参考资料
    fig.add_subplot(1, 1, 1, axisbg='#FFFACD')控制小图的背景色(覆盖在figure创建的图层上)

  • 设置x轴y轴坐标范围
    ax.axis([0, 2*np.pi, -1.2, 1.5])对应参数表示[xmin, xmax, ymin, ymax]

  • 在图中添加文本注释
    ax.text(3, 0.2, 'x=3')表示在(3, 0.2)处添加文本’x=3’

  • 标签
    ax.set_xlabel('x value')添加坐标轴的标签
    ax.set_title('My plot', fontsize=14)添加标题, fontsize为标题字体大小

  • 添加图例
    ax.legend(loc='best')loc表示图例的位置,’best’为自适应最佳位置

  • 打开栅格
    ax.grid(True)

  • 单独标出某个点
    ax.plot(point_x, point_y, 'ro')表示在(point_x, point_y)处标了一个红色的点

  • 带箭头指向的文本注释
    ax.annotate('max', xy=(point_x, point_y), xytext=(2.0, 1.3),\
    arrowprops=dict(facecolor='g', headwidth=12, width=5))
    表示在(point_x, point_y)处标了一个红色的点
    其中,xy对应箭头指向的点,xytext对应文本位置,arrowprops控制箭头属性
    更多annotate文本注释内容可点击参考资料

  • 修改坐标轴刻度
    ax.set_xticks([0, 1, 2, 3, 4, 5])
    ax.set_xticklabels(['zero','one','two','three','four','five'], rotation=30, fontsize='small')将原来的x轴[0, 1, 2, 3, 4, 5]替换为自定义的[‘zero’,’one’,’two’,’three’,’four’,’five’],rotation为旋转角度,fontsize为字体

完整代码如下:

import numpy as np
#第一步:导入matplotlib包
import matplotlib.pyplot as plt

#构造一些二维的点,你可以使用自己的数据
#在0和2*pi之间产生50个均匀分布,赋值给x
x = np.linspace(0, 2*np.pi, 50)
y1 = np.sin(x)
y2 = np.cos(x)

#第二步:创建Figure
#facecolor控制外面大图的背景
fig = plt.figure(figsize=(8,6), facecolor='#B7B7B7')

#第三步:创建子图 
#axisbg控制小图的背景色(覆盖在figure创建的图层上)
ax = fig.add_subplot(1, 1, 1, axisbg='#FFFACD')

#第四步:画曲线图
#label用来给这条曲线做标签,调用legend()可以显示
ax.plot(x, y1, 'b-', label='sin(x)')  #画y1图像
ax.plot(x, y2, 'r--', label='cos(x)')  #画y2图像

#设置x轴y轴坐标范围,[xmin, xmax, ymin, ymax]
ax.axis([0, 2*np.pi, -1.2, 1.5])

#在图中添加文本注释
ax.text(3, 0.2, 'x=3')

#添加标签
ax.set_xlabel('x value')  #x轴的标签
ax.set_ylabel('y value')  #y轴的标签
ax.set_title('My plot', fontsize=14)  #标题

#添加图例
ax.legend(loc='best')  #loc表示图例的位置

#打开栅格
ax.grid(True)

point_x = np.pi/2.0 #待标注点(point_x,point_y)
point_y = 1
ax.plot(point_x, point_y, 'ro') #先画点
#再画箭头,xy对应箭头指向的点,xytext对应文本位置,arrowprops控制箭头属性
ax.annotate('max', xy=(point_x, point_y), xytext=(2.0, 1.3),\
            arrowprops=dict(facecolor='g', headwidth=12, width=5))

#如果需要修改坐标轴刻度,可以使用下面2句
#ax.set_xticks([0, 1, 2, 3, 4, 5])
#ax.set_xticklabels(['zero','one','two','three','four','five'], rotation=30, fontsize='small') 

#第五步:显示图形 
plt.show()

完整代码图片

以上方法是参考《利用Python进行数据分析》和网上一些资料自己总结的。

我们还可以采用另外一种画图方法,稍有不同,简单介绍一下:

#方法二,稍有不同
import numpy as np
#导入matplotlib包
import matplotlib.pyplot as plt

#构造一些二维的点,你可以使用自己的数据
#在0和2*pi之间产生50个均匀分布,赋值给x
x = np.linspace(0, 2*np.pi, 50)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = y1 + y2

#创建Figure
fig = plt.figure(figsize=(10,8))

#我们创建3个子图
#前面2个数'22'表示2x2的子图,第3个数'1'表示在第1个子图中绘图
plt.subplot(221)
#另一种设置x轴y轴坐标范围的方法
plt.xlim([0, 2*np.pi])  #设置x轴范围
plt.ylim([-1.2, 1.2])
plt.grid(True)  #打开栅格
plt.plot(x, y1)

plt.subplot(222)
#用plt也可以同时设置x,y轴坐标
plt.axis([0, 2*np.pi, -1.2, 1.2])
plt.plot(x, y2)

#可以通过axisbg参数设置图片的背景色
plt.subplot(223, axisbg='#FAFAD2')
plt.plot(x, y3)

plt.show()

方法二图片

参考资料:《利用Python进行数据分析》第8章

后记:
欢迎点赞,评论和转发,转载请注明出处!
这是我的第一篇博客,每一篇博客我都会用心去写。这不仅是一个记录和分享的过程,同时也是见证自我成长的过程。如果您发现有什么错误,请及时指出来。最后,希望我的博客对你有些许的帮助。

### 使用 Python Matplotlib 进行绘图 #### 导入必要的库 为了使用 `matplotlib` 库进行绘图,首先需要导入相应的模块。通常情况下会使用 `pyplot` 子库来进行基本的图形绘制。 ```python import matplotlib.pyplot as plt ``` #### 创建简单的折线图 可以通过定义数据集并调用 `plot()` 方法创建一条或多条折线图表: ```python x_values = [0, 1, 2, 3, 4] y_values = [0, 2, 1, 3, 4] plt.plot(x_values, y_values) plt.show() ``` 此段代码展示了如何利用 `matplotlib` 中最基本的函数来展示一组简单的关系曲线[^1]。 #### 自定义图像外观 对于更复杂的可视化需求,可以进一步调整图形属性,如线条颜色、宽度以及标记样式等参数;还可以添加标题、坐标轴标签和网格线等功能增强可读性和美观度。 ```python fig, ax = plt.subplots() ax.set_title('Sample Line Chart') ax.set_xlabel('X Axis Label') ax.set_ylabel('Y Axis Label') ax.grid(True) line, = ax.plot(x_values, y_values, color='blue', linewidth=2.5, marker='o', label="Data Points") ax.legend(loc='best') plt.show() ``` 上述例子说明了怎样设置图表的各种特性,并且引入了 `Axes` 对象以便于更加灵活地控制布局结构。 #### 解决中文显示问题 当涉及到含有汉字字符的内容时,可能会遇到编码错误的情况。为了避免这种情况发生,可以在脚本开头加入特定指令指定合适的字体文件用于渲染文本元素。 ```python from pylab import * mpl.rcParams['font.sans-serif']=['SimHei'] mpl.rcParams['axes.unicode_minus']=False # 步骤防止负号'-'显示为方块. # 接下来继续正常的绘图命令... ``` 这段配置能够有效处理大部分场景下的中文字体缺失或乱码现象[^4]。 #### 访问字体资源位置 如果想要了解当前环境中可用的所有字体列表及其存储地址,则可通过如下方式获取相关信息: ```python import matplotlib.font_manager as fm print(fm.findSystemFonts(fontpaths=None)) ``` 另外一种方法就是直接打印出默认配置中的字体路径: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 这有助于排查是否存在兼容性的障碍或者寻找适合项目所需的特殊字型[^2]。 #### 构建三维模型视图 除了常规二维平面外,`Matplotlib` 同样提供了丰富的 API 支持立体空间内的对象呈现。借助扩展组件 `mplot3d` 可轻松实现诸如散点云、表面贴图等形式的表现效果。 ```python from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(projection='3d') z_line = np.linspace(0, 15, 1000) x_line = np.sin(z_line) y_line = np.cos(z_line) ax.plot3D(x_line, y_line, z_line, 'gray') plt.show() ``` 这里给出了一个基础实例,介绍了如何加载额外的支持包并将之应用于具体的案例之中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值