【Matplotlib】2各种图形的绘制

折线图

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值