matplotlib基本用法

基本绘图

在这里插入图片描述
每个红色的点是坐标,把5个点的坐标连接成一条线,组成了一个折线图

from matplotlib import pyplot as plt

# 数据在x轴的位置
x=range(2,26,2)
# 数据在y轴的位置
y=range(1,25,2)

plt.plot(x,y)
plt.show()

常用方法

设置图片大小figsize、分辨率dpi

plt.figure(figsize=(20,8),dpi=80)

保存图片savefig

plt.savefig(’./zxt.png’)

设置x的刻度xticks ,当刻度太密集使用列表的间隔取值来解决

labels参数传入的列表与x一一对应
rotation让字符串旋转xx°展示

plt.xticks(x,labels=xtick_lablels,rotation=45)
plt.xticks(x[::3],labels=xtick_lablels[::3],rotation=45)

给图像添加描述信息xlabelylabeltitle

在这里插入图片描述

自定义绘制图形的风格

在这里插入图片描述
在这里插入图片描述

添加图例

在这里插入图片描述

常用统计图

对比

在这里插入图片描述

折线图

from matplotlib import pyplot as plt
from matplotlib import rc
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x=range(0,120)

y1=[random.randint(20,35) for i in range(0,120)]
y2=[random.randint(20,35) for i in range(0,120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y1,label='自己',color='red',linestyle='--',linewidth=2,alpha=0.5)
plt.plot(x,y2,label='同桌',color='blue',linestyle='-',linewidth=2,alpha=0.5)

_x=list(x)[::3]
_xtick_lablels=["10点{}分".format(i) for i in range(0,60)]
_xtick_lablels+=["11点{}分".format(i) for i in range(0,60)]

plt.xticks(_x,labels=_xtick_lablels[::3],rotation=45)
plt.yticks(range(min(y1),max(y1)+1))

plt.xlabel=('时间')
plt.ylabel=('温度 单位摄氏度')
plt.title('10点到12点每分钟的气温变化情况')

plt.legend(loc=0)

plt.grid(alpha=0.4)

plt.savefig('./zxt.png')

plt.show()

散点图

from matplotlib import pyplot as plt
from matplotlib import rc
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

x_3=range(1,32)
x_10=range(51,82)

y_3=[random.randint(20,35) for i in range(31)]
y_10=[random.randint(20,35) for i in range(31)]

plt.figure(figsize=(20,8),dpi=80)

plt.scatter(x_3,y_3,label='3月份')
plt.scatter(x_10,y_10,label='10月份')

_x=list(x_3)+list(x_10)
_xtick_lablels=["3月{}日".format(i) for i in x_3 ]
_xtick_lablels+=["10点{}分".format(i) for i in x_10]

plt.xticks(_x[::3],labels=_xtick_lablels[::3],rotation=45)

plt.xlabel=('时间')
plt.ylabel=('温度 单位摄氏度')
plt.title('10点到12点每分钟的气温变化情况')

plt.legend(loc=0)

plt.grid(alpha=0.4)

plt.savefig('./zxt.png')

plt.show()

条形图

纵向

from matplotlib import pyplot as plt
from matplotlib import rc
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

a=['美国','中国','印度','俄罗斯','缅甸','韩国','日本','英国','法国','菲律宾']
b_15=[random.randint(100,500) for i in range(10)]
b_16=[random.randint(100,500) for i in range(10)]
b_17=[random.randint(100,500) for i in range(10)]

plt.figure(figsize=(20,8),dpi=80)

bar_width=0.2
x_15=list(range(len(a)))
x_16=[ i+bar_width*1  for i in x_15]
x_17=[ i+bar_width*2  for i in x_15]

plt.bar(x_15,b_15,width=bar_width,label='3月15日')
plt.bar(x_16,b_16,width=bar_width,label='3月16日')
plt.bar(x_17,b_17,width=bar_width,label='3月17日')

plt.xticks(x_15,a,rotation=45)

plt.xlabel=('时间')
plt.ylabel=('温度 单位摄氏度')
plt.title('10点到12点每分钟的气温变化情况')

plt.legend(loc=0)

plt.grid(alpha=0.4)

plt.savefig('./zxt.png')

plt.show()

横向

from matplotlib import pyplot as plt
from matplotlib import rc
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

a=['美国','中国','印度','俄罗斯','缅甸','韩国','日本','英国','法国','菲律宾']
b=[random.randint(100,1000) for i in range(10)]

plt.figure(figsize=(20,8),dpi=80)

plt.barh(range(len(a)),b,height=0.3,color='orange')

plt.yticks(range(len(a)),a,rotation=45)

plt.xlabel=('时间')
plt.ylabel=('温度 单位摄氏度')
plt.title('10点到12点每分钟的气温变化情况')

plt.legend(loc=0)

plt.grid(alpha=0.4)

plt.savefig('./zxt.png')

plt.show()

直方图

没有经过统计的数据,可以绘制直方图

from matplotlib import pyplot as plt
from matplotlib import rc
import random

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

a=[random.randint(60,200) for i in range(250)]

plt.figure(figsize=(20,8),dpi=80)

d=3
num_bins=max(a)-min(a)//d

plt.hist(a,num_bins)

plt.xticks(range(min(a),max(a)+d,d))

plt.xlabel=('时间')
plt.ylabel=('温度 单位摄氏度')
plt.title('10点到12点每分钟的气温变化情况')

plt.legend(loc=0)

plt.grid(alpha=0.4)

plt.savefig('./zxt.png')

plt.show()

版权声明:本文为m0_49119161原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。