python学习笔记(2): python画图02-三纵轴


目录:

1 导入需要的库

from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes

import matplotlib.pyplot as plt

import matplotlib

import numpy as np

# 设置中文显示

font = {'family':'Microsoft YaHei', 'weight':'bold', 'size':12}

plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'

plt.rcParams['axes.unicode_minus'] = False

matplotlib.rc('font', **font)

2 构造数据

x = np.arange(1,750,20)

y1 = np.sin(2*np.pi/365*x)*27

y2 = np.sin(2*np.pi/365*x)*50+100

y3 = abs(np.sin(2*np.pi/(365*2)*x)*100)

3 画图显示数据

fig = plt.figure(figsize=(10, 3))

ax = fig.add_subplot(1,3,1)

ax.plot(x,y1,'r-',linewidth=2,label='y1-中文')

ax.legend(loc="upper right")

ax = fig.add_subplot(1,3,2)

ax.plot(x,y2,'g-',linewidth=2,label='y2-中文')

ax.legend(loc="upper right")

ax = fig.add_subplot(1,3,3)

ax.bar(x,y3,width=10,color='b',label='y3-中文')

ax.legend(loc="upper right")

4 三纵坐轴显示数据

fig = plt.figure(figsize=(10, 6))

ax = HostAxes(fig, [0.1, 0.1, 0.7, 0.7])  #用[left, bottom, weight, height]的方式定义axes, 0 <= l,b,w,h <= 1

kw = dict(linewidth = 2,markerfacecolor='none',markersize = 4)

#parasite addtional axes, share x

ax02 = ParasiteAxes(ax, sharex=ax)

ax03 = ParasiteAxes(ax, sharex=ax)

#append axes

ax.parasites.append(ax02)

ax.parasites.append(ax03)

ax03_axisline = ax02.get_grid_helper().new_fixed_axis

ax03.axis['right4'] = ax03_axisline(loc='right', axes=ax03, offset=(60,0))

fig.add_axes(ax)

h1, = ax.plot(x, y1, linewidth=2,color='r',label="y1-中文")

h2, = ax02.plot(x, y2, linewidth=2,color='g',label="y2-中文")

h3 = ax03.bar(x,y3,width=5,color='b',label='y3-中文')

#invisible right axis of ax

ax.axis['right'].set_visible(False)

ax.axis['top'].set_visible(True)

ax02.axis['right'].set_visible(True)

ax02.axis['right'].major_ticklabels.set_visible(True)

ax02.axis['right'].label.set_visible(True)

#set label for axis

ax.set_ylabel('y1-中文')

ax.set_xlabel('xxx')

ax02.set_ylabel('y2-中文')

ax03.set_ylabel('y3-中文')

#set xlim for yaxis

ax.set_ylim(-150,150)

ax02.set_ylim(0,150)

ax03.set_ylim(0,500)

ax.legend()

#name axies, xticks colors

ax.axis['left'].label.set_color('r')

ax02.axis['right'].label.set_color('g')

ax03.axis['right4'].label.set_color('b')

ax.axis['left'].major_ticks.set_color('r')

ax02.axis['right'].major_ticks.set_color('g')

ax03.axis['right4'].major_ticks.set_color('b')

ax.axis['left'].major_ticklabels.set_color('r')

ax02.axis['right'].major_ticklabels.set_color('g')

ax03.axis['right4'].major_ticklabels.set_color('b')

ax.axis['left'].line.set_color('r')

ax02.axis['right'].line.set_color('g')

ax03.axis['right4'].line.set_color('b')