Tôi đang sử dụng Python Matplotlib để vẽ đường nét. Dưới đây là một số mã tôi có dưới đây làm cơ sở. Nếu bạn chạy điều này, bạn sẽ thấy rằng các nhãn gần như ở dọc. Tôi muốn có được các nhãn định hướng ngang, nhưng tôi không có ý tưởng làm thế nào có thể đạt được điều này. Tôi đã thử với ClabelText
, mà các tài liệu cho thấy, nhưng không hiểu làm thế nào điều này là nghĩa vụ phải làm việc. Tôi đánh giá cao nếu ai đó có thể đề xuất một cách để định hướng các nhãn, có hoặc không có ClabelText.thay đổi hướng của đối tượng văn bản nhãn viền đường viền
import itertools as it
import numpy as np
from matplotlib.ticker import FuncFormatter
from matplotlib.contour import ClabelText
import matplotlib.pyplot as plt
from math import pi, log
def getTime(data):
M = data['weight']
Tei = data['temp']
Twasser = 99.8
Teikl = 86.0 ## max allowed temp
k = 0.262 ## estimate was 0.3 W/(m.K),
Crho = 3.18 # (KJ/kgC)
const = pow(Crho, 1.0/3)/(pi*pi*k*pow(4*pi/3,2.0/3))
Tval = const*pow(M,2.0/3)*log(0.76*(Tei-Twasser)/(Teikl-Twasser))
return Tval # coo time in minutes
def contourFmt(val, posn):
mins = int(val // 1)
secs = int(val % 1 *60)
return '{0:d}mm{1:d}ss'.format(mins, secs)
def labeler(val): #is this any use??
print(val)
return
#weights = np.array(range(40, 80, 5))*1.0
#temps = np.array(range(0, 30, 5))*1.0
weights = np.arange(40.0, 80.0, 5.0)
temps = np.arange(0.0, 25.01, 5.0)
X = temps
Y = weights
Z = np.zeros((len(X), len(Y)))
xx = [{'temp':i} for i in X]
yy = [{'weight':i} for i in Y]
plt.figure()
##zz = it.product(xx,yy)
for i, xdicts in enumerate(xx):
for j, ydicts in enumerate(yy):
zd = {}
zd.update(xdicts)
zd.update(ydicts)
zval = getTime(zd)
Z[i,j] = zval
times = np.arange(4.00, 6.50, 0.25)
CS = plt.contour(Y, X, Z, levels=times, colors='b')
lbl = ClabelText(labeler)
lbl.set_rotation('horizontal')
formatter = FuncFormatter(contourFmt)
#plt.clabel(CS, inline=True, fmt=formatter, fontsize=12)
plt.clabel(CS, inline=True, use_clabeltext=True, fmt=formatter, fontsize=12)
plt.grid(True)
plt.clabel(CS, inline=1, fontsize=12)
plt.show()
Tuyệt vời, chính xác những gì tôi cần. Điều đó nhắc nhở câu hỏi tiếp theo, làm thế nào tôi có thể loại bỏ các nhãn gốc (5.250 vv)? Tôi có thể xóa label2, nhưng những người khác vẫn ở đó – user3293938