import numpy as np
import matplotlib .pyplot as plt
# 处理中文正常显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 处理负号显示
折线图
plt.plot()
# 准备画布 参数 figsize 规定画布的大小。如下是8x4英寸。1英寸=72像素dpi
plt.figure(figsize=(8,4),facecolor='cyan')
# plot 折线图
plt.plot([-1,0,1,2,3],[4,3,7,2,4])
# 只显示图
plt.show()
# 准备画布 参数 figsize 规定画布的大小。如下是8x4英寸。1英寸=72像素dpi
plt.figure(figsize=(8,4),facecolor='cyan')
# plot 折线图
plt.plot([1,2,3],[5,7,5],'black')
plt.plot([4,5,6],[5,7,5],'black')
plt.plot([2,3,4,5],[3,1,1,3],'red')
# 只显示图
plt.show()
# 画一个 颜色相同的笑脸
# 创建坐标值
lab=[(-5,4),(-4,5),(-3,4)]
# 可以用推导式取出所有 x 和 y
x=[each[0] for each in lab]
y=[each[1] for each in lab]
x
[-5, -4, -3]
y
[4, 5, 4]
list(zip(x,y))
[(-5, 4), (-4, 5), (-3, 4)]
# 直接解压得到所有x,y
list(zip(*zip(x,y)))
[(-5, -4, -3), (4, 5, 4)]
x2,y2=zip(*lab)
x2
(-5, -4, -3)
y2
(4, 5, 4)
plt.plot(x2,y2,color='pink',linestyle='-.')
[<matplotlib.lines.Line2D at 0x2c7192d8550>]
plot常用参数
plot(x,y,
‘go–’, // 颜色 点位 线条风格
linewidth = 2 ,//线条宽度
markersize = 12 ,//点的大小
color = ‘g’ ,// 颜色可以用单词,可以用 16进制颜色表示
marker = ‘o’ ,// 点位的形状 ,查语法 character description
linestyle = ‘’ ,// 线条风格,实线,虚线,点线 ‘-’, ‘–’, ‘-.’, ‘:’, ‘’
)
# 画2个线条
plt.figure(figsize=(8,4))
# 两组坐标
points=[(-1,5),(1,6),(3,3),(5,4)]
points2= [(-1,7),(1,8),(3,5),(5,6)]
# 解压缩
x1,y1=zip(*points)
x2,y2=zip(*points2)
# 参数 label 标注,必须结合方法 plt.legend()显示
plt.plot(x1,y1,label='价格')
plt.plot(x2,y2,label='销量')
plt.legend()
plt.xlabel('时 间')
plt.ylabel('y 轴')
plt.title('xxx公司xxx信息图')
plt.show()
柱状图、条形图
plt.bar()
plt.bar(x1,y1)
plt.show()
plt.bar(x1,y1,label='柱状图-1',color='#5AB9C1')
# 为了都显示,x2集体加1
plt.bar(np.array(x2)+1,y2,label='柱状图-2',color='#98D2D6')
plt.legend()
plt.show()
plt.barh()条形图
plt.barh(x1,y1,label='柱状图-1',color='#5AB9C1')
# 为了都显示,x2集体加1
plt.barh(np.array(x2)+1,y2,label='柱状图-2',color='#98D2D6')
plt.legend()
plt.show()
直方图
plt.hist()
# 准备年龄数据
ages=np.random.randint(18,81,200)
# 准备一个分箱
# bins=np.arange(10,81,10)
bins=np.arange(1,9)*10
# rwidth='每个柱子的宽度'
plt.hist(ages,bins,histtype='bar',rwidth=0.8,label='年龄分布直方图')
plt.legend()
plt.title('200人年龄分布')
plt.xlabel('年 龄 区 间')
plt.ylabel('人 数')
plt.show()
import matplotlib.pyplot as plt
plt.text(0.6, 0.7, "eggs", size=50, rotation=30.,
ha="center", va="center",
bbox=dict(boxstyle="round",
ec=(1., 0.5, 0.5),
fc=(1., 0.8, 0.8),
)
)
plt.text(0.55, 0.6, "spam", size=50, rotation=-25.,
ha="right", va="top",
bbox=dict(boxstyle="square",
ec=(1., 0.5, 0.5),
fc=(1., 0.8, 0.8),
)
)
plt.show()
饼状图
plt.pie()
time_array=[8,2,10,4]
activity='睡/吃/工作/玩'.split('/')
plt.pie(
time_array,
labels=activity,
startangle=0, #起始角度
colors=['pink','blue','r','orange'],
shadow=True,
explode=(0,0,0,0.2), #把哪一块拉出基于半径的距离比例
autopct='%0.2f%%', #占整体的百分比
labeldistance=1.1, #label距离圆心的距离比例,默认1.1
pctdistance=0.6, #百分比距离圆心的距离比例,默认0.6
radius=1.5, #基于默认图的倍数
)
plt.show()
散点图
plt.scatter()
x3=np.arange(1,9)
y3=np.random.randint(2,9,8)
plt.scatter(
x3,y3,
s=40 , # 控制点的大小
c = 'red', # 颜色
marker='*' , #形状
)
# np.linspace(start ,end ,n = 50)在start -end中均匀的返回n个数字
plt.plot(x3,np.linspace(2,8,8))
plt.show()