安装:pip install matplotlib
导入模块:

# 导入模块
import matplotlib.pyplot as plt
# 处理中文正常显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 处理 负号 的正常显示
plt.rcParams['axes.unicode_minus'] = False

一、图例、标题和标签

#规定画布大小
plt.figure(figsize=(8,4))
#准备2组坐标
x =[1,2,3]
y=[5,7,4]
x1=[1,2,3]
y1=[10,14,12]

#画图
#label:规定标注
plt.plot(x,y,label='第一条线')
plt.plot(x1,y1,label='第二条线')
#xlabel\ylabel  x轴的标注和y轴的标注
plt.xlabel('x轴')
plt.ylabel('y轴')
# 整个图的标题
plt.title('包含图例、标题与标签的图')
# legend 图例
plt.legend() 

#显示图像
plt.show()

python 图例的位置 python matplotlib 图例_python

二、画各种图

1.折线图(plot)

# 准备数据
x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,2,3,1]

# 绘制折线图
plt.plot(x,y,label='折线图')
# 绘制x轴
plt.xlabel('x轴')
# 绘制y轴
plt.ylabel('y轴')
# 标题
plt.title('绘制折线图')
# 使用图例
plt.legend()
# plt.show()

python 图例的位置 python matplotlib 图例_python_02

2.柱状图、条形图

柱状图:bar
条形图:hbar

(1)柱状图

# 准备一组数据
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.bar(x,y,label='柱状图-01',color='#CC7777')
# color ='xxx'参数,设置图标显示的颜色
# plt.bar(x,y,label='柱状图-01',color='y')
plt.bar([2,4,6,8,10],x,label='柱状图-02',color='#17a05E')
# 颜色取得 得方式:(1)qq截图 选中颜色后按住ctrl 会显示为16进制颜色
#(2)百度 常用十六进制颜色对照表
#(3)网页中 右击检查 color:
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.legend()
plt.show()

python 图例的位置 python matplotlib 图例_python 图例的位置_03

2.条形图

# 准备一组数据
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.barh(x,y,label='条形图-01',color='#CC7777')
# color ='xxx'参数,设置图标显示的颜色
# plt.bar(x,y,label='柱状图-01',color='y')
plt.barh([2,4,6,8,10],x,label='条形图-02',color='#17a05E')
# 颜色取得 得方式:(1)qq截图 选中颜色后按住ctrl 会显示为16进制颜色
#(2)百度 常用十六进制颜色对照表
#(3)网页中 右击检查 color:
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.legend()
plt.show()

python 图例的位置 python matplotlib 图例_图例_04

3.直方图(hist)

# 创建一组数据
ages = np.random.randint(18,80,200)
# bins = [10,20,30,40,50,60,70,80],创建一个分区
bins = np.arange(1,9)*10
# 画直方图
plt.hist(ages,bins,histtype='bar',label='年龄直方图',rwidth=0.8)
plt.title('200人年龄分布直方图')
plt.xlabel('年龄')
plt.ylabel('个数')
plt.legend()
plt.show()

python 图例的位置 python matplotlib 图例_图例_05

4.饼图(pie)

# 准备四个数据
slices = [7,2,2,13]
# 给数据起的标签名
activities = ['eat','sleep','work','play']
# 给图准备的颜色
cols = ['c','#FFE76E','#CC0001','#3D79AA']
# 准备一块画布,画布规定尺寸为6x6,如果不是正方形的尺寸可能饼图会是椭圆形的
plt.figure(figsize=(6,6))
plt.pie(
    slices,#数据
    labels=activities,#标签
    #开始的角度
    startangle=0, # 开始画的角度
    # 阴影
#     shadow=True,
    #切出来
    explode=(0,0.1,0,0), # 范围是0-1 ,决定离开程度
    autopct='%1.2f%%', # 显示值,保留2位小数
    colors=cols #运用颜色
)
plt.title('饼状图') #图形标题
plt.show()

python 图例的位置 python matplotlib 图例_数据_06

5.散点图(scatter)

# 准备一组数据
x = [1,2,3,4,5,6,7,8]
y = [5,4,2,6,7,5,1,8]
# 画散点图,marker 可以是s,o,*,+,x,v,_,h,d,逗号,.,等等,s是代表点的大小
plt.scatter(x,y,label='散点图',c='#000000',marker='s',s=280)
plt.xlabel('x')
plt.ylabel('y')
plt.title('散点图')
plt.legend()
plt.show()

python 图例的位置 python matplotlib 图例_python_07

6.堆叠图(stackplot)

# 随意创建的一周中每天的时间分配
days= range(1,6)
sleeping =[10,5,11,8,7]
eating = [2,3,3,1,4]
studying =[8,7,2,1,12]
playing =[4,9,8,14,1]
# 上面四行是拿来弄图例的
plt.plot([],[],c='r',label='sleeping',linewidth=5)
plt.plot([],[],c='y',label='eating',linewidth=5)
plt.plot([],[],c='c',label='studying',linewidth=5)
plt.plot([],[],c='b',label='playing',linewidth=5)
plt.stackplot(days,sleeping,eating,studying,playing,colors=['r','y','c','b'])
plt.title('堆叠图')
plt.legend()
plt.xlabel('天数')
plt.ylabel('小时数')
plt.show()

python 图例的位置 python matplotlib 图例_python_08

7.sin和cos图

# linspace(start,end,n=50) 在start和end之间均匀得返回n个数字
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 在Π和-Π之间取了256个数,endpoint包括端点
C = np.cos(x) # 对上面取的值求cos
S = np.sin(x) # 对上面取得值求sin

#调整坐标轴
plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(C.min()*1.5,C.max()*1.5)
# 修改
plt.xticks(
    [-np.pi,-np.pi/2,0,np.pi/2,np.pi],
    [r'$-\pi$','$-\pi/2$','$0$','$\pi/2$','$\pi$']
)
plt.yticks([-1,0,1])
# 通过plt.gca() 获取Axes对象ax
ax=plt.gca()
# 把右边和上面设置为不可见
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把下边界和左边界移动到0点
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))



#绘制图像
plt.plot(x,C,color='b',linewidth=3,label='cos') # 画cos图像(折线图)
plt.plot(x,S,'r',lw='3',label='sin') # 画sin图像
# plt.legend(loc='') 组合 upper lower right left center 来决定图例的位置
plt.legend(loc='upper left')

# 标注特殊点
t = 2*np.pi/3 
#画出需要标注的蓝色的线
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--')
#画出需要标注的蓝色的点
plt.scatter([t,],[np.cos(t),],50,color='b')
#给蓝色的点添加注释(对应点的数学值)
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
             xy=(t,np.cos(t)),xycoords='data',
             xytext=(-90,-50),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
#画出需要标注的红色的线
plt.plot([t,t],[0,np.sin(t)],color='r',linewidth=2.5,linestyle='--')
#画出需要标注的红色的点
plt.scatter([t,],[np.sin(t),],50,color='r')
#给红色的点添加注释(对应点的数学值)
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
             xy=(t,np.sin(t)),xycoords='data',
             xytext=(+10,+40),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(18)
    label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))
plt.show()

python 图例的位置 python matplotlib 图例_柱状图_09