如何減少顏色條上的刻度數并確保值等間距?基本上,8 個色帶必須等距分布Amin=257,Amax=454即每個色帶的長度 = (Amax-Amin)/8。我介紹了當前和預期的輸出。
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
import numpy as np
from matplotlib.colors import Normalize
from matplotlib import cm
import math
from numpy import nan
fig,aPe = plt.subplots(1)
n=3
N=2*n*(n-1)
J = np.array([[]])
Pe=np.array([[394.20560747663563, 408.7929050665396 , 419.132709901089 ,
398.95097406721044, 403.81198021076113, 430.00914784982064,
424.50127213826016, 453.54817733128607, 441.4651085668709 ,
447.42507960635163, 413.8982415602072 , 390.3025816600353 ],
[394.20560747663563, 408.7929050665396 , 419.132709901089 ,
398.95097406721044, 403.81198021076113, 430.00914784982064,
424.50127213826016, 453.5481773312857 , 347.7309476270773 ,
257.42585381716805, 413.8982415602072 , 390.3025816600353 ]])
C1 = nan
for i in J[0]:
Pe = np.insert(Pe, i, [C1], axis=1)
print("Pe =", [Pe])
for i in range(0,len(Pe)):
Max=max(max(Pe[i]), max(Pe[i]))
Min=min(min(Pe[i]), min(Pe[i]))
a=Min
b=Max
Amax= math.ceil(Max)
Amin= math.floor(Min)
print(Amax, Amin)
color = cm.get_cmap('Dark2')
norm = Normalize(vmin=Amin, vmax=Amax)
color_list = []
for i in range(len(Pe[0])):
color_list.append(color(((Pe[0,i])-Amin)/(Amax-Amin)))
id = 0
for j in range(0, n):
for k in range(n-1):
aPe.hlines(200 200*(n-j-1) 5*n, 200*(k 1) 5*n, 200*(k 2) 5*n, zorder=0, colors=color_list[id])
id = 1
for i in range(0, n):
rect = mpl.patches.Rectangle((200 200*i, 200 200*j), 10*n, 10*n, linewidth=1, edgecolor='black', facecolor='black')
aPe.add_patch(rect)
if j < n-1:
aPe.vlines(200 200*i 5*n, 200*(n-1-j) 5*n, 200*(n-j) 5*n, zorder=0, colors=color_list[id])
id = 1
cb = fig.colorbar(cm.ScalarMappable(cmap=color, norm=norm), ticks=np.arange(Amin, Amax len(color.colors), len(color.colors)))
cb.set_label("Entry pressure (N/m$^{2}$)")
aPe.set_xlim(left = 0, right = 220*n)
aPe.set_ylim(bottom = 0, top = 220*n)
plt.axis('off')
plt.show()
當前輸出為

預期的輸出是

uj5u.com熱心網友回復:
創建顏色條后,添加此行以將刻度設定為圖片中顯示的方式。
cb.set_ticks(np.arange(Amin, Amax 1, (Amax-Amin)/8).astype(np.int64))
陰謀

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/504384.html
標籤:Python matplotlib
上一篇:將多個切片傳遞給numpy陣列
