折线图
1 坐标点的展示,线段的颜色宽度,点的包裹颜色
plt.plot(x,y,marker='.',markersize=10, color = 'red',
linewidth=4,markeredgecolor='blue')
2 图示标签
plt.plot(x1,y,label = '标签1')
plt.plot(x2,y,label = '标签2')
# 必须加入下面代码才能显示
plt.legend()
3 图示标签缩写模式
- 详见官网 https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot
fmt = [颜色][marker][line]
plt.plot(x1,y,'go--',label = '标签1')
plt.plot(x2,y,'g^--',label = '标签2')
plt.plot(x2,y,'^--'color = '#b82410',label = '标签2') # 使用调色板样式
plt.grid() #开启网格功能
4 加阴影,注意fill_between()括号包含的区域
plt.fill_between(data['字段1'],data['字段2'],alpha=0.2)
# 阴影加中线
overall_mid = 1000
plt.fill_between(data['字段1'],data['字段2'],overall_mid,alpha=0.2)
# 只显示部分阴影时
plt.fill_between(data['字段1'],data['字段2'],overall_mid,where = (data['字段1']>overall_mid),
interprolate= True, alpha=0.2)
plt.fill_between(data['字段1'],data['字段2'],where = (data['字段1']>data['字段2']),
interprolate= True, alpha=0.2)
柱状图
1 图像绘制
plt.bar(x,y)
# 修改展示模式
plt.barh(x,y)
2 长字体显示
plt.xticks(rotation=65)
3 横向展示时也做排序时
x.reverse()
y.reverse()
饼图
1 图像绘制
plt.pie(list2,labels = list1)
2 爆炸效果
explo = [0,0,0,0.2,0]
plt.pie(ls2,labels = ls1,explode=explo)
# 爆炸空间 pctdistance
plt.pie(ls2,labels = ls1,explode=explo,pctdistance=0.8)
3 轻微立体效果
explo = [0,0,0,0.2,0]
plt.pie(ls2,labels = ls1,explode=explo,shadow=True)
4 设置第一块的起始位置
explo = [0,0,0,0.2,0]
plt.pie(ls2,labels = ls1,explode=explo,shadow=True, startangle=0)
5 显示百分比的值
explo = [0,0,0,0.2,0]
plt.pie(ls2,labels = ls1,explode=explo,shadow=True, startangle=0, autopct='%1.2f%%')
6 设置边界颜色
explo = [0,0,0,0.2,0]
plt.pie(ls2,labels = ls1,explode=explo,shadow=True, startangle=0,
autopct='%1.2f%%', wedgeprops={'edgecolor':'black'})
7 适应浏览器大小
plt.tight_layout()
堆叠图
1 横向堆叠,bar图为例,手动模式
index_x = np.array(list1)
w=0.25
plt.bar(index_x=w,list2,width=w)
plt.bar(index_x,list3,width=w)
plt.bar(index_x+w,list4,width=w)
2 横向堆叠,简洁方式
labels = ['class1','class2','class3']
colors = ['Blue','Green','Red']
plt.stackplot(list1,list2,list3,list4,labels=labels, colors = colors)
plt.legend(loc=0) # 调整labels放置的位置
plt.legend(loc=(0.07,0.6)) # 调整labels放置的位置,坐标
直方图
1 图像绘制
ages = [18,19,21,25,26,30,32,38,45,55]
plt.hist(ages,bins = 10) #bins 是分组
#可以手工分组
bins = [20,30,40,50]
plt.hist(ages,bins = bins)
2 增加边界
plt.hist(ages,bins = 10,edgecolor='black')
3 数量级相差太大时,增加一个参数log=True,对数方式,这样可以显示得更完整
plt.hist(ages,bins = 10,edgecolor='black',log=True)
4 添加辅助线
median_age = 29
plt.axvline(median_age,color='red',label = 'Median')
plt.legend()
|
散点图
1 图像绘制
plt.scatter(x,y)
#若要添加网格
plt.grid()
2 点的规格
plt.scatter(x,y,s=100,c='red',edgecolor='black',alpha=0.25)
# 如果颜色部分直接用一个列表,颜色会自动调整
colors = [1,2,3,4,5,6]
plt.scatter(x,y,s=100,c=colors,edgecolor='black',alpha=0.25)
# 颜色进阶,颜色来源
plt.scatter(x,y,s=100,c=colors,cmap = 'summer',edgecolor='black',alpha=0.25)
# 同样的,点的尺寸也可以用列表,自动调整
sizes = [1,2,3,4,5]
plt.scatter(x,y,s=sizes,c=colors,edgecolor='black',alpha=0.25)
3 网格线宽
plt.scatter(x,y,s=100,c='red',edgecolor='black',linewidth=1)
4 散点图旁边添加视图条标签
cbar = plt.colorbar()
cbar = set_label('Label')
5 当点太密集不好分辨时,用对数的方法调整标尺
plt.xscale('log')
plt.yscale('log')
时序数据的可视化
1 图像绘制
y = [1,2,3,4,5,6,7]
x = [
datatime(2020,1,1),
datatime(2020,1,2),
datatime(2020,1,3),
datatime(2020,1,4),
datatime(2020,1,5),
datatime(2020,1,6),
datatime(2020,1,7)
]
# 这样得到的是一个时间格式的散点图
plt.plot_date(x,y)
2 绘制连线
plt.plot_date(x,y,linestyle='solid')
3 风格文件
# 如
plt.style.use('seaborn')
4 使时间轴展示更清晰
from matplotlib import dates as mpl_dates
plt.plot_date(x,y,linestyle='solid')
plt.gcf().autofmt_xdate() # 自动调整
# gcf 获得整张的控制权,gca 获得x轴,y轴的控制权
#手动设置
plt.plot_date(x,y,linestyle='solid')
plt.gcf().autofmt_xdate()
date_format = mpl_dates.DateFormatter('%b,%d,%Y') # 自己设置的格式
plt.gca().xaxis.set_major_formatter(date_format)
实时数据图,例:
import random
from itertools import count
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from IPython.display import HTML # 网页刷新
x1=[]
y1=[]
index = count()
def animate(i):
x1.append(next(index))
y1.append(random.randint(0,50))
plt.cla() # 清空之前数据,每次只画一条线
plt.plot(x1,y1)
ani = FuncAnimation(plt.gcf(),animate,interval=1000)
HTML(ani.to_jshtml())
图表的多重绘制
1 绘制图像–静态写法
fig, (ax1,ax2) = plt.subplots(nrows = 2,ncols=1)
# ax 是每一个子图,如果只写一个,就只有一个总的
2 共享模式
fig, (ax1,ax2) = plt.subplots(nrows = 2,ncols=2,sharex=True,sharey=True) # x,y轴相同
3 绘制图像–动态加载
fig = plt.figure()
ax1 = fig.add_subplot(311) # 3行1列第一个图
ax2 = fig.add_subplot(312)
ax3 = fig.add_subplot(313)
4 绘制图像–网格坐标模式
ax1 = plt.subplot2grid((6,2),(0,0),rowspan=2,colspan=1)
ax2 = plt.subplot2grid((6,2),(0,1),rowspan=2,colspan=1)
ax3 = plt.subplot2grid((6,2),(2,0),rowspan=2,colspan=2)
ax4 = plt.subplot2grid((6,2),(4,0),rowspan=2,colspan=1)
ax5 = plt.subplot2grid((6,2),(4,1),rowspan=2,colspan=1)
# 6行1列, 从0行,0列开始,跨越rowspan colspan