亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 matplotlib 軸縱橫比設置為等于 twinx() 和 twiny()

如何將 matplotlib 軸縱橫比設置為等于 twinx() 和 twiny()

HUX布斯 2022-06-22 19:03:07
我正在嘗試制作一個所有四個面都有溫度標簽的情節。我可以使用 twinx() 和 twiny() 獲得標簽,但我無法弄清楚如何讓這些軸在縮放上相等(兩個比例上的一個單位相同,所以圖表將是長方形)。import numpy as npimport matplotlib.pyplot as plt plt.style.use('classic')# Grid squares values:height = 21width = 31# Initialize matrix of zeros for that sizedata = np.zeros((height, width)) + 75# Make set temperatures on fixed positionsT_alpha   = 0    # (bottom boundary temperature)T_bravo   = 40   # (left boundary temperature)T_charlie = 100  # (top boundary temperature)T_delta   = 100  # (right boundary temperature)# Note: index 0,0 is bottom leftfor i in range(width):    data[0, i] = T_alpha    data[(height - 1), i] = T_charliefor j in range(1, (height - 1)):    data[j, 0] = T_bravo    data[j, (width - 1)] = T_delta#print(data)heatmap = plt.pcolor(data)ax = plt.axes()ax.xaxis.set_ticks_position('none')ax.yaxis.set_ticks_position('none')ax.yaxis.set_major_locator(plt.NullLocator())ax.xaxis.set_major_formatter(plt.NullFormatter())ax.set_xlabel("T = " + str(T_alpha) + "\N{DEGREE SIGN}C")ax.set_ylabel("T = " + str(T_bravo) + "\N{DEGREE SIGN}C")ax2 = ax.twinx()ax2.yaxis.set_label_position('right')ax2.yaxis.set_ticks_position('none')ax2.yaxis.set_major_locator(plt.NullLocator())ax2.set_ylabel("T = " + str(T_delta) + "\N{DEGREE SIGN}C")ax3 = ax.twiny()ax3.xaxis.set_label_position('top')ax3.xaxis.set_ticks_position('none')ax3.xaxis.set_major_formatter(plt.NullFormatter())ax3.set_xlabel("T = " + str(T_charlie) + "\N{DEGREE SIGN}C")plt.xlim(0, width)plt.ylim(0, height)cbar = plt.colorbar(heatmap)cbar.set_label("Temperature (\N{DEGREE SIGN}C)")plt.clim(0, 100)plt.show()這是我正在尋找的縮放比例(但所有四個邊都標記了)
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

感謝@ImportanceOfBeingErnest 使用text.


這是修復:


import numpy as np

import matplotlib.pyplot as plt 


plt.axes().set_aspect('equal')

plt.style.use('classic')


# Grid squares values:

height = 21

width = 31


# Initialize matrix of zeros for that size

data = np.zeros((height, width)) + 75


# Make set temperatures on fixed positions

T_alpha   = 0    # (bottom boundary temperature)

T_bravo   = 40   # (left boundary temperature)

T_charlie = 100  # (top boundary temperature)

T_delta   = 100  # (right boundary temperature)


# Note: index 0,0 is bottom left


for i in range(width):

    data[0, i] = T_alpha

    data[(height - 1), i] = T_charlie

for j in range(1, (height - 1)):

    data[j, 0] = T_bravo

    data[j, (width - 1)] = T_delta


#print(data)


heatmap = plt.pcolor(data)


plt.text(0.5, -0.02, "T = " + str(T_alpha) + "\N{DEGREE SIGN}C",

         horizontalalignment='center',

         verticalalignment='top',

         rotation=0,

         clip_on=False,

         transform=plt.gca().transAxes)

plt.text(0, 0.5, "T = " + str(T_bravo) + "\N{DEGREE SIGN}C",

         horizontalalignment='right',

         verticalalignment='center',

         rotation=90,

         clip_on=False,

         transform=plt.gca().transAxes)

plt.text(0.5, 1, "T = " + str(T_charlie) + "\N{DEGREE SIGN}C",

         horizontalalignment='center',

         verticalalignment='bottom',

         rotation=0,

         clip_on=False,

         transform=plt.gca().transAxes)

plt.text(1, 0.5, "T = " + str(T_delta) + "\N{DEGREE SIGN}C",

         horizontalalignment='left',

         verticalalignment='center',

         rotation=270,

         clip_on=False,

         transform=plt.gca().transAxes)


plt.axis("off")


plt.xlim(0, width)

plt.ylim(0, height)


cbar = plt.colorbar(heatmap)

cbar.set_label("Temperature (\N{DEGREE SIGN}C)")

plt.clim(0, 100)


plt.show()

這使


查看完整回答
反對 回復 2022-06-22
  • 1 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號