最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 用Matplotlib作圖中有多個Y軸

 更新時間:2020年11月28日 14:38:56   作者:大大西瓜吃不飽  
這篇文章主要介紹了python 如何用Matplotlib作圖中有多個Y軸,幫助大家更好的利用python繪圖,感興趣的朋友可以了解下

在作圖過程中,需要繪制多個變量,但是每個變量的數(shù)量級不同,在一個坐標(biāo)軸下作圖導(dǎo)致曲線變化很難觀察,這時就用到多個坐標(biāo)軸。本文除了涉及多個坐標(biāo)軸還包括Axisartist相關(guān)作圖指令、做圖中l(wèi)abel為公式的表達方式、matplotlib中常用指令。

一、放一個官方例子先

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()

該例子的作圖結(jié)果為:

二、實際繪制

在實際使用中希望繪制的多變量數(shù)值如下表所示:

為了實現(xiàn)這個作圖,經(jīng)過反復(fù)修改美化,代碼如下:

1.導(dǎo)入包

from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplot as plt

2.導(dǎo)入數(shù)據(jù)

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.作圖并保存,相關(guān)指令后有備注,可以幫助理解

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) # 設(shè)置軸label的大小
ax_k.axis['bottom'].major_ticklabels.set_pad(8) #設(shè)置x軸坐標(biāo)刻度與x軸的距離,坐標(biāo)軸刻度旋轉(zhuǎn)會使label和坐標(biāo)軸重合
ax_k.axis['bottom'].label.set_pad(12) #設(shè)置x軸坐標(biāo)刻度與x軸label的距離,label會和坐標(biāo)軸刻度重合
ax_k.axis[:].major_ticks.set_tick_out(True) #設(shè)置坐標(biāo)軸上刻度突起的短線向外還是向內(nèi)

#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()) # 坐標(biāo)軸label的顏色
ax_K.axis['right2'].label.set_color(curve_K.get_color())


ax_p.axis['right'].major_ticks.set_color(curve_p.get_color()) # 坐標(biāo)軸刻度小突起的顏色
ax_K.axis['right2'].major_ticks.set_color(curve_K.get_color())

ax_p.axis['right'].major_ticklabels.set_color(curve_p.get_color()) # 坐標(biāo)軸刻度值的顏色
ax_K.axis['right2'].major_ticklabels.set_color(curve_K.get_color())

ax_p.axis['right'].line.set_color(curve_p.get_color()) # 坐標(biāo)軸線的顏色
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.繪制結(jié)果

PS

該作圖是在Axisartist的基礎(chǔ)上完成的,一些平時常用的繪制指令在此處是無用的。經(jīng)過查找相關(guān)資料,https://www.osgeo.cn/matplotlib/tutorials/toolkits/axisartist.html 該網(wǎng)站可以提供一些用法的幫助。

以上就是python 用Matplotlib作圖中有多個Y軸的詳細內(nèi)容,更多關(guān)于python Matplotlib作圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解python中的變量

    詳解python中的變量

    這篇文章主要為大家詳細介紹了python的變量,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python3爬蟲RedisDump的安裝步驟

    Python3爬蟲RedisDump的安裝步驟

    在本篇文章里小編給大家整理的是一篇關(guān)于Python3爬蟲RedisDump的安裝步驟,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Django 實現(xiàn)外鍵去除自動添加的后綴‘_id’

    Django 實現(xiàn)外鍵去除自動添加的后綴‘_id’

    今天小編就為大家分享一篇Django 實現(xiàn)外鍵去除自動添加的后綴‘_id’,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中yield的用法詳解

    python中yield的用法詳解

    這篇文章主要介紹了python中yield的用法詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 使用python?itertools實現(xiàn)計算雙十一滿減湊單

    使用python?itertools實現(xiàn)計算雙十一滿減湊單

    一年一度的雙十一又到了,在這樣一個日子中,可能遇到一些問題,首先是“湊單”問題,本文將使用python中的itertools庫解決這一問題,感興趣的可以了解下
    2024-11-11
  • Django 實現(xiàn)對已存在的model進行更改

    Django 實現(xiàn)對已存在的model進行更改

    這篇文章主要介紹了Django 實現(xiàn)對已存在的model進行更改,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python入門教程(十二)Python列表

    Python入門教程(十二)Python列表

    這篇文章主要介紹了Python入門教程(十二)Python列表,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Python結(jié)合spaCy?進行簡易自然語言處理

    Python結(jié)合spaCy?進行簡易自然語言處理

    這篇文章主要為大家介紹了Python結(jié)合spaCy進行簡易自然語言處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 使用Python設(shè)置Excel單元格數(shù)字的顯示格式

    使用Python設(shè)置Excel單元格數(shù)字的顯示格式

    Python語言可以幫助我們靈活設(shè)置Excel單元格的數(shù)字格式,保證數(shù)據(jù)的一致性與專業(yè)標(biāo)準(zhǔn),本文將介紹如何使用Python對Excel工作表中單元格的數(shù)字格式進行設(shè)置,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 關(guān)于python列表相關(guān)知識點

    關(guān)于python列表相關(guān)知識點

    這篇文章主要介紹了關(guān)于python列表相關(guān)知識點,變量可以存儲一個元素,而列表是一個大容器,可以存儲N多個元素,程序可以方便的對這些數(shù)據(jù)進行整體操作,需要的朋友可以參考下
    2023-04-04

最新評論

望城县| 进贤县| 县级市| 昆明市| 东方市| 舒兰市| 陆良县| 广宗县| 澄江县| 定州市| 桐柏县| 樟树市| 城固县| 芜湖市| 济阳县| 阳朔县| 澄迈县| 会泽县| 陵水| 历史| 香河县| 黄石市| 招远市| 安丘市| 明水县| 永年县| 陕西省| 双桥区| 海宁市| 麻阳| 汉源县| 湛江市| 浦城县| 浑源县| 娱乐| 潞西市| 大洼县| 钦州市| 石河子市| 花垣县| 四平市|