matplotlib和pandas模块子图绘制总结
程序员文章站
2022-03-21 17:39:56
...
在一幅图中绘制多个图案的方法很多,这阶段自学只要学会matplotlib和pandas模块中各自一种绘制图案即可。各自方法如下:(基于python语言编写)
import matplotlib.pyplot as plt
from matplotlib import gridspec
import matplotlib
import numpy as np
matplotlib.rcParams['font.family'] = 'Kaiti' # 由于matplotlib默认不显示中文,这里将中文显示设置为‘楷体’
plt.rcParams['axes.unicode_minus'] = False # 显示负号
# plt方法一:网格构造
def plt_test1():
plt.figure(figsize=(12, 6), dpi=80)
gs = gridspec.GridSpec(2,2)
ax1 = plt.subplot(gs[:, 0])
ax1.plot(np.arange(5), label='ax1')
ax1.set_title('test1')
ax1.legend()
ax2 = plt.subplot(gs[:, 1])
ax2.bar(list('abcdefghij'), np.linspace(-1, 1, 10), label='ax2')
ax2.set_title('test2')
ax2.legend()
plt.show()
return None
# plt方法二: subplot方法
def plt_test2():
plt.figure(figsize=(12, 6), dpi = 80)
plt.subplot2grid((2,3), (0,0), rowspan = 2) # 创建一个图片网络,大小2行3列,从左上开始,选取2行绘图
plt.plot(np.arange(4))
plt.title('第一幅图')
plt.subplot2grid((2,3), (0,1), colspan=2)
plt.bar(list('abcd'), [i for i in range(4)])
plt.title('第二幅图')
plt.subplot2grid((2,3), (1,1))
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('第三幅图')
# .... 其他画图省略,过程基本相似
plt.show()
return None
# pandas统计过程中的一个图中多个子图绘制 ---->>> 以Titanic号为例
# 这部分代码在anaconda可运行,应该是主要进行数据分析用到的,在sypder上运行报错。好像。。。
def pd_plot():
f, ax = plt.subplots(1,2, figsize=(12,6)) # 创建一个1行2列图纸, 这个方法好像只能创建一行的。返回这个图的对象f和子图的列表ax,,,可索引
data['Survived'].value_counts().plot.pie(explode=[0, 0.1], autopct='%1.1f%%', ax=ax[0], shadow=True)
ax[0].set_title('是否遇难所占比例')
data['Survived'].value_counts().plot.bar(ax=ax[1])
ax[1].set_title('是否遇难具体人数')
plt.show()
return None
总算是写完了,自己本来翻阅资料也是看懂了,但是当自己敲起来代码时发现自己还是太年轻了,总之,这是第一次写博客,本身自己也是初学者,好多词语用的还不规范,不管怎样,努力学下去吧。