欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

总算是写完了,自己本来翻阅资料也是看懂了,但是当自己敲起来代码时发现自己还是太年轻了,总之,这是第一次写博客,本身自己也是初学者,好多词语用的还不规范,不管怎样,努力学下去吧。

相关标签: python子图绘制