Python科学计算库之matplotlib

matplotlib

Figure和Subplot

  • Figure:面板(图),matplotlib中的所有图像都是位于figure对象中,一个图像只能有一个figure对象。
  • Subplot:子图,figure对象下创建一个或多个subplot对象(即axes)用于绘制图像。

曲线图(plot)

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# 设置在jupyter中matplotlib的显示情况 tk: 显示出来;inline: 内嵌的形式
%matplotlib tk

# 解决中文显示问题
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)
# 创建一个绘图对象(并设置画板的大小)
plt.figure(figsize=(8,4))
# 在绘图对象上绘制曲线
plt.plot(x,y,label="sin(x)",color="red",linewidth=2) 
plt.plot(x,z,"g--",label="$cos(x^2)$")
#plt.plot(np.random.randn(50).cumsum(),"k--")

# label : 给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加''$''符号
# color : 指定曲线的颜色
# linewidth : 指定曲线的宽度
# 第三个参数"g--"指定曲线的颜色和线型

# 设置X轴的文字
plt.xlabel("Time(s)") 
# 设置Y轴的文字
plt.ylabel("Volt") 
# 设置Y轴的文字偏移90度
#plt.yticks(rotation=90)
# 设置标题
plt.title("PyPlot 例子") 
# 设置Y轴的范围
plt.ylim(-1.2,1.2) 
# 展示图示说明(展示在左下角)
plt.legend(loc='lower left') 
# 保存图示
plt.savefig("test.png",dpi=120)
# 展示图示
plt.show()

图表显示方式及曲线图

x = np.linspace(0, 10, 500)
dashes = [10, 5, 100, 5]  # 10 points on, 5 off, 100 on, 5 off

fig, ax = plt.subplots() #获取子视图
# 设置子视图
line1, = ax.plot(x, np.sin(x), 'r--', linewidth=2,label='View One')
line1.set_dashes(dashes) #设置绘图曲线画笔的样式
# 设置子视图
line2, = ax.plot(x, -1 * np.sin(x), dashes=[30, 5, 10, 5], color='y',label='View Two')
# 设置曲线名字显示在右下方
ax.legend(loc='lower right')
plt.show()

条形图(bar)

bar_positions = np.arange(5) + 1
bar_heights = np.random.randint(1, 5, 5)
fig, ax = plt.subplots()
# 参数为: 柱形图之间的间距; 柱形图的高度; 柱形图的宽度
ax.bar(bar_positions, bar_heights, 0.5)
#ax.barh(bar_positions, bar_heights, 0.5) #横图
plt.show()

柱状图(hist)

cl = (255 / 255, 128 / 255, 14 / 255)
# bins:园柱的个数;alpha:透明度;range显示圆柱高度值范围
plt.hist(np.random.randint(1, 50, 50), bins=20,range=(0, 50),color=cl, alpha=0.3)
plt.show()

散点图(scatter)

N = 100
x = np.arange(N)
y = np.arange(N) + 3 * np.random.randn(N)
# marker散点的形状
plt.scatter(x,y,marker="o")
plt.show()

气泡图

N = 100
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N) * 125
# 每个气泡区域数组
area = np.pi * (15 * np.random.rand(N))**2  + 2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

饼状图(pie)

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' # 饼状图各个块名称
sizes = [15, 30, 45, 10] # 饼状图各个块占比
explode = (0, 0.1, 0, 0)  # 15和30饼之间的间距

fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)

# shadow:是否显示阴影
# autopct:小数点位数(1.n 表示n位小数)
# startangle:饼状图旋转角度


ax1.axis('equal')  # 设置纵横比相等

plt.show()

画板添加多张图

fig = plt.figure()
#在画板上添加图(在2行2列的第一个位置添加)
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 4)
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值