Python数据分析 知识量:13 - 56 - 232
下面是一个双折线图的示例:
import matplotlib.pyplot as plt import numpy as np import matplotlib.pyplot as plt # 处理中文显示问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False # 建立画布和坐标系 fig=plt.figure(figsize=(6,4)) ax=fig.add_subplot(1,1,1) # 设置数据 x=np.array([1,2,3,4,5,6]) y1=np.array([56,885,457,695,1254,265]) y2=np.array([215,1065,498,1254,1423,899]) # 绘制双折线 ax.plot(x,y1,color='g',linestyle='dashdot',label='估算值') ax.plot(x,y2,color='b',label='实际值') # 添加数据标签 for a,b in zip(x,y1): plt.text(a,b,b) for a,b in zip(x,y2): plt.text(a,b,b) # 设置图例 plt.legend() plt.show()
绘制的图形为:
下面是绘制折线图+柱状图的示例:
import matplotlib.pyplot as plt import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号 fig=plt.figure(figsize=(6,4)) ax=fig.add_subplot(1,1,1) # 设置数据 x=np.array([1,2,3,4,5,6]) y1=np.array([56,885,457,695,1254,265]) y2=np.array([215,1065,498,1254,1423,899]) # 绘制双折线 ax.bar(x,y1,color='b',label='估算值') ax.plot(x,y2,color='g',label='实际值') # 添加数据标签 for a,b in zip(x,y1): plt.text(a,b,b) for a,b in zip(x,y2): plt.text(a,b,b) # 设置图例 plt.legend() plt.show()
绘制的图形为:
双y轴图表是指在一个坐标系中,有两条y轴,即左右y轴。一般使用twinx()函数来实现。基本的流程是:
建立坐标系。
绘制主坐标轴(左边y轴)图表。
调用twinx函数。
绘制次坐标轴(右边y轴)图表。
下面是一个示例:
import matplotlib.pyplot as plt import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号 fig=plt.figure(figsize=(6,4)) ax=fig.add_subplot(1,1,1) # 设置数据 x=np.array([1,2,3,4,5,6]) y1=np.array([56,885,457,695,1254,265]) y2=np.array([0.56,0.885,0.457,0.695,0.1254,0.265]) # 绘制主坐标轴图表 ax.plot(x,y1,label='实际值') # 设置主坐标轴的名称 ax.set_xlabel('月份') ax.set_ylabel('实际值') # 设置主坐标轴图例 ax.legend(loc='upper left') # 调用twinx()函数,设置共用x轴 ax2 = ax.twinx() # 绘制次坐标轴图表 ax2.plot(x,y2,color='y',linestyle='dashdot',label='合格率') # 设置次坐标轴的名称 ax2.set_ylabel('合格率') # 设置次坐标轴图例 ax2.legend(loc=0) plt.show()
绘制的图形为:
以上图表存在一个问题,就是有两个图例,下面将图例合并为一个:
import matplotlib.pyplot as plt import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号 fig=plt.figure(figsize=(6,4)) ax=fig.add_subplot(1,1,1) # 设置数据 x=np.array([1,2,3,4,5,6]) y1=np.array([56,885,457,695,1254,265]) y2=np.array([0.56,0.885,0.457,0.695,0.1254,0.265]) # 绘制主坐标轴图表 p1=ax.plot(x,y1,label='实际值') # 设置主坐标轴的名称 ax.set_xlabel('月份') ax.set_ylabel('实际值') # 调用twinx()函数,设置共用x轴 ax2 = ax.twinx() # 绘制次坐标轴图表 p2=ax2.plot(x,y2,color='y',linestyle='dashdot',label='合格率') # 设置次坐标轴的名称 ax2.set_ylabel('合格率') # 设置图例 p=p1+p2 labs=[l.get_label() for l in p] ax.legend(p, labs,loc='upper right') plt.show()
修改后,绘制的图形为:
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6