博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二、Python开发---39、matplotlib(2)

Posted on 2020-03-11 13:01  兰智杰  阅读(312)  评论(0编辑  收藏  举报

颜色标记和线型

  

#导入模块
import matplotlib.pyplot as plt
import matplotlib as mpl
plt.figure()
# 解决中文显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.plot([1,2,3],[5,7,4],color='red', linestyle='dashed', marker='o',markersize = 10,alpha=0.5)
plt.show()

 

相关操作

  1、plt.plot(x,y1,x,y2) ——一张图上显示两条曲线,两个为一组构成一条曲线

  

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-3,3,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.figure()
plt.plot(x,y1,x,y2)         #一张图上显示两条曲线
plt.plot([1,2,4,3,4])       #没有新的画板,就在一张图上显示
#如果只接收到一个值就默认为y值 ,而x默认为从0 到 n
plt.show()

  2、图例和边框的操作

  

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
# 解决中文显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x1 = [1,2,3]
y1 = [5,7,4]
x2 = [1,2,3]
y2 = [10,14,12]
plt.figure()
plt.plot(x1,y1,'ro--',label = 'First Line')  #设置线条标签
plt.plot(x2,y2,'b-',label = 'Second Line')
#设置标题、标签
plt.xlabel('月份')                            #X轴标签
plt.ylabel('美元单位/亿')                     #Y轴标签
plt.title('进出口数据')                       #标题
#设置X轴范围
plt.xlim(0,6)
#设置y轴范围
plt.ylim(0,15)
#设置X轴刻度
plt.xticks(np.linspace(1,6,6),[str(i) + '' for i in range(1,7)])
#设置y轴刻度
plt.yticks(np.arange(0,16,3),['0','300','600','900','1200','1500'])
#获取坐标轴信息
ax = plt.gca()
#设置边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#legend 生成默认图例
plt.legend()
plt.show()

  3、用函数plt.annotate()给折线图折点添加坐标

  

#模块pyplot包含很多生成图表的函数
import matplotlib.pyplot as plt
import numpy as np
input_values = [1,2,3,4,5,6]
squares = [1,4,9,16,25,36]
#plot()绘制折线图
plt.plot(input_values,squares,linewidth=5)
#np.array()将列表转换为存储单一数据类型的多维数组
x = np.array(input_values)
y = np.array(squares)
#annotate()给折线点设置坐标值
for a,b in zip(x,y):
    plt.annotate('(%s,%s)'%(a,b),xy=(a,b),xytext=(-20,10),textcoords='offset points')
#设置标题
plt.title('Square Numbers',fontsize=24)
plt.xlabel('Value',fontsize=14)
plt.ylabel('Square of Value',fontsize=14)
#设置刻度的大小,both代表xy同时设置
plt.tick_params(axis='both',labelsize=14)
#show()打开matplotlib查看器,并显示绘制的图形
plt.show()

子图的几种操作方式

  1、方式一

  

#subplot子图(方式一)
import matplotlib.pyplot as plt
x1 = [1,2,3]
y1 = [5,7,4]
x2 = [1,2,3]
y2 = [10,14,12]
plt.figure(num=1)
plt.subplot(221)
plt.plot(x1,y1,'r-')
plt.subplot(223)
plt.plot(x2,y2,'b--')
plt.show()

  2、方式二

  

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
# 解决中文显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#获取figure对象
fig = plt.figure(figsize = (8,6))       #figsize调整大小
#在figure上创建对象
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(212)
#在ax1上绘图
ax1.plot(np.random.randn(50).cumsum(),'g-')
#在ax2上绘图
ax2.plot(np.random.randn(50).cumsum(),'b--')
#在ax3上绘图
ax3.plot(np.random.randn(50).cumsum(),'k--')
plt.show()

  3、方式三

  

#方式三
import matplotlib.pyplot as plt
#图一
fig,axes = plt.subplots(2,2)
print(fig)      #输出为 Figure(640x480)
print(axes)
'''
输出为  [[<matplotlib.axes._subplots.AxesSubplot object at 0x000001A170A5DF28>
          <matplotlib.axes._subplots.AxesSubplot object at 0x000001A1721660B8>]
         [<matplotlib.axes._subplots.AxesSubplot object at 0x000001A172197668>
          <matplotlib.axes._subplots.AxesSubplot object at 0x000001A1721C9C18>]]
'''
#图二
Plot, axes = plt.subplots( nrows=4, ncols=1, sharex=True, sharey=False ) #gridspec_kw={'height_ratios':[2,2,1,1]}
Plot.suptitle('test', fontsize=20)#设置fig标题
axes[0].plot(range(10),'ro-')
axes[1].plot(range(10),'bo-')
axes[2].plot(range(10),'go-')
axes[3].plot(range(10),'mo-')
plt.show()

练习

  调整子图之间的距离

  

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
fig, axes = plt.subplots(2,2,sharex=True, sharey=True )
for i in range(2):
    for j in range(2):
        axes[i,j].plot(np.random.randn(10), color='g', alpha=0.75)
#调整子图之间的距离
plt.subplots_adjust(wspace = 0.1,hspace = 0.1)
fig.suptitle('test', fontsize=20)
plt.savefig('调整距离.jpg',dpi = 50)        #调整分辨率
plt.show()