python 은 Matplotlib 로 그림 을 그 릴 때 Y 축 이 여러 개 있 습 니 다.
9420 단어 pythonMatplotlib작도 하 다y 축
1.공식 적 인 예 를 들 어 먼저
from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(1) # figure,(1) 1
ax_cof = HostAxes(fig, [0, 0, 0.9, 0.9]) # [left, bottom, weight, height] axes,0 <= l,b,w,h <= 1
#parasite addtional axes, share x
ax_temp = ParasiteAxes(ax_cof, sharex=ax_cof)
ax_load = ParasiteAxes(ax_cof, sharex=ax_cof)
ax_cp = ParasiteAxes(ax_cof, sharex=ax_cof)
ax_wear = ParasiteAxes(ax_cof, sharex=ax_cof)
#append axes
ax_cof.parasites.append(ax_temp)
ax_cof.parasites.append(ax_load)
ax_cof.parasites.append(ax_cp)
ax_cof.parasites.append(ax_wear)
#invisible right axis of ax_cof
ax_cof.axis['right'].set_visible(False)
ax_cof.axis['top'].set_visible(False)
ax_temp.axis['right'].set_visible(True)
ax_temp.axis['right'].major_ticklabels.set_visible(True)
ax_temp.axis['right'].label.set_visible(True)
#set label for axis
ax_cof.set_ylabel('cof')
ax_cof.set_xlabel('Distance (m)')
ax_temp.set_ylabel('Temperature')
ax_load.set_ylabel('load')
ax_cp.set_ylabel('CP')
ax_wear.set_ylabel('Wear')
load_axisline = ax_load.get_grid_helper().new_fixed_axis
cp_axisline = ax_cp.get_grid_helper().new_fixed_axis
wear_axisline = ax_wear.get_grid_helper().new_fixed_axis
ax_load.axis['right2'] = load_axisline(loc='right', axes=ax_load, offset=(40,0))
ax_cp.axis['right3'] = cp_axisline(loc='right', axes=ax_cp, offset=(80,0))
ax_wear.axis['right4'] = wear_axisline(loc='right', axes=ax_wear, offset=(120,0))
fig.add_axes(ax_cof)
''' #set limit of x, y
ax_cof.set_xlim(0,2)
ax_cof.set_ylim(0,3)
'''
curve_cof, = ax_cof.plot([0, 1, 2], [0, 1, 2], label="CoF", color='black')
curve_temp, = ax_temp.plot([0, 1, 2], [0, 3, 2], label="Temp", color='red')
curve_load, = ax_load.plot([0, 1, 2], [1, 2, 3], label="Load", color='green')
curve_cp, = ax_cp.plot([0, 1, 2], [0, 40, 25], label="CP", color='pink')
curve_wear, = ax_wear.plot([0, 1, 2], [25, 18, 9], label="Wear", color='blue')
ax_temp.set_ylim(0,4)
ax_load.set_ylim(0,4)
ax_cp.set_ylim(0,50)
ax_wear.set_ylim(0,30)
ax_cof.legend()
# ,
#ax_cof.axis['left'].label.set_color(ax_cof.get_color())
ax_temp.axis['right'].label.set_color('red')
ax_load.axis['right2'].label.set_color('green')
ax_cp.axis['right3'].label.set_color('pink')
ax_wear.axis['right4'].label.set_color('blue')
ax_temp.axis['right'].major_ticks.set_color('red')
ax_load.axis['right2'].major_ticks.set_color('green')
ax_cp.axis['right3'].major_ticks.set_color('pink')
ax_wear.axis['right4'].major_ticks.set_color('blue')
ax_temp.axis['right'].major_ticklabels.set_color('red')
ax_load.axis['right2'].major_ticklabels.set_color('green')
ax_cp.axis['right3'].major_ticklabels.set_color('pink')
ax_wear.axis['right4'].major_ticklabels.set_color('blue')
ax_temp.axis['right'].line.set_color('red')
ax_load.axis['right2'].line.set_color('green')
ax_cp.axis['right3'].line.set_color('pink')
ax_wear.axis['right4'].line.set_color('blue')
plt.show()
이 예 의 작도 결 과 는 다음 과 같다.2.실제 그리 기
실제 사용 에서 그 리 려 는 다 변수 수 치 는 다음 표 와 같 습 니 다.
이 그림 을 실현 하기 위해 반복 적 인 수정 과 미 화 를 거 쳐 코드 는 다음 과 같다.
1.가방 가 져 오기
from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplot as plt
2.데이터 가 져 오기
x = ['ATL','LAX','CLT','LAS','MSP','DTW','PHX','DCA','SLC','ORD','DFW','PHL','PDX','DEN','IAH','BOS','SAN','BWI','MDW','IND']
k_in = [49.160,47.367,26.858,30.315,16.552,28.590,23.905,18.818,28.735,6.721,10.315,26.398,38.575,7.646,11.227,8.864,15.327,19.120,11.521,19.618]
k_out = [38.024,19.974,25.011,22.050,30.108,18.327,20.811,28.464,23.72,8.470,4.119,10.000,25.158,7.851,10.450,11.130,15.441,7.519,20.819,32.825]
p = [0.0537,0.0301,0.0306,0.0217,0.0229,0.0223,0.0218,0.0179,0.0155,0.0465,0.0419,0.0165,0.0091,0.0357,0.0232,0.0200,0.0129,0.0143,0.0113,0.0064]
K = [4.6844,2.0296,1.5858,1.1347,1.0706,1.0442,0.9764,0.8447,0.8141,0.7066,0.6041,0.5990,0.5808,0.5534,0.5023,0.3992,0.3964,0.3799,0.3639,0.3331]
3.그림 을 만 들 고 저장 하 며 관련 명령 에 대한 설명 이 있 으 면 이해 할 수 있 습 니 다.
fig = plt.figure(1) # figure
ax_k = HostAxes(fig, [0, 0, 0.9, 0.9]) # [left, bottom, weight, height] axes,0 <= l,b,w,h <= 1
#parasite addtional axes, share x
ax_p = ParasiteAxes(ax_k, sharex=ax_k)
ax_K = ParasiteAxes(ax_k, sharex=ax_k)
#append axes
ax_k.parasites.append(ax_p)
ax_k.parasites.append(ax_K)
ax_k.set_ylabel('$K_i^{in}\;/\;K_i^{out}$')
ax_k.axis['bottom'].major_ticklabels.set_rotation(45)
ax_k.set_xlabel('Airport')
ax_k.axis['bottom','left'].label.set_fontsize(12) # label
ax_k.axis['bottom'].major_ticklabels.set_pad(8) # x x , label
ax_k.axis['bottom'].label.set_pad(12) # x x label ,label
ax_k.axis[:].major_ticks.set_tick_out(True) #
#invisible right axis of ax_k
ax_k.axis['right'].set_visible(False)
ax_k.axis['top'].set_visible(True)
ax_p.axis['right'].set_visible(True)
ax_p.axis['right'].major_ticklabels.set_visible(True)
ax_p.axis['right'].label.set_visible(True)
ax_p.axis['right'].major_ticks.set_tick_out(True)
ax_p.set_ylabel('${p_i}$')
ax_p.axis['right'].label.set_fontsize(13)
ax_K.set_ylabel('${K_i}$')
K_axisline = ax_K.get_grid_helper().new_fixed_axis
ax_K.axis['right2'] = K_axisline(loc='right', axes=ax_K, offset=(60,0))
ax_K.axis['right2'].major_ticks.set_tick_out(True)
ax_K.axis['right2'].label.set_fontsize(13)
fig.add_axes(ax_k)
curve_k1, = ax_k.plot(list(range(20)), k_in, marker ='v',markersize=8,label="$K_i^{in}$",alpha = 0.7)
curve_k2, = ax_k.plot(list(range(20)), k_out, marker ='^',markersize=8, label="$K_i^{out}$",alpha = 0.7)
curve_p, = ax_p.plot(list(range(20)), p, marker ='P',markersize=8,label="${p_i}$",alpha = 0.7)
curve_K, = ax_K.plot(list(range(20)), K, marker ='o',markersize=8, label="${K_i}$",alpha = 0.7,linewidth=3)
plt.xticks(list(range(20)), x)
# ax_k.set_xticks(list(range(20)))
# ax_k.set_xticklabels(x)
ax_k.axis['bottom'].major_ticklabels.set_rotation(45)
# ax_k.set_rotation(90)
# plt.xticks(list(range(20)), x, rotation = 'vertical')
ax_p.set_ylim(0,0.06)
ax_K.set_ylim(0,5)
ax_k.legend(labelspacing = 0.4, fontsize = 10)
# ,
ax_p.axis['right'].label.set_color(curve_p.get_color()) # label
ax_K.axis['right2'].label.set_color(curve_K.get_color())
ax_p.axis['right'].major_ticks.set_color(curve_p.get_color()) #
ax_K.axis['right2'].major_ticks.set_color(curve_K.get_color())
ax_p.axis['right'].major_ticklabels.set_color(curve_p.get_color()) #
ax_K.axis['right2'].major_ticklabels.set_color(curve_K.get_color())
ax_p.axis['right'].line.set_color(curve_p.get_color()) #
ax_K.axis['right2'].line.set_color(curve_K.get_color())
plt.savefig('10.key metrics mapping.pdf', bbox_inches='tight', dpi=800)
plt.show()
4.결과 그리 기PS
이 그림 은 Axis artist 를 바탕 으로 완성 되 었 으 며,평소에 자주 사용 하 는 그리 기 명령 은 여기에서 쓸모 가 없다.관련 자 료 를 찾 아 보면 4.567915.이 사 이 트 는 용법 의 도움 을 줄 수 있다.
이상 은 python 이 Matplotlib 로 그림 을 그 리 는 중 여러 개의 Y 축 에 대한 상세 한 내용 입 니 다.python Matplotlib 로 그림 을 그 리 는 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.