Tôi đang cố gắng để tạo ra một cốt truyện nhưng tôi chỉ muốn ticklabels để hiển thị như thể hiện nơi quy mô đăng nhập được hiển thị như ở trên. Tôi chỉ muốn đánh dấu nhỏ cho 50, 500 và 2000 để hiển thị. Có anyway để xác định các nhãn tick nhỏ để hiển thị ?? Tôi đã cố gắng tìm ra điều này một chút nhưng không tìm được giải pháp tốt. Tất cả những gì tôi có thể nghĩ là lấy các minorticklabels() và thiết lập phông chữ thành 0. Điều này được hiển thị bên dưới đoạn mã đầu tiên. Tôi đã hy vọng có một giải pháp sạch hơn.Matplotlib vì vậy trục nhật ký chỉ có nhãn đánh dấu nhỏ tại các điểm được chỉ định. Ngoài ra thay đổi kích thước của nhãn tick trong colorbar
Điều khác đang thay đổi kích thước của các dấu ticklabels trong thanh màu mà tôi chưa tìm ra. Nếu có ai biết cách để làm điều này xin vui lòng cho tôi biết vì tôi không nhìn thấy một phương pháp trong colorbar dễ dàng làm điều này.
mã đầu tiên:
fig = figure(figto)
ax = fig.add_subplot(111)
actShape = activationTrace.shape
semitones = arange(actShape[1])
freqArray = arange(actShape[0])
X,Y = meshgrid(self.testFreqArray,self.testFreqArray)
Z = sum(activationTrace[:,:,beg:end],axis=2)
surf = ax.contourf(X,Y,Z, 8, cmap=cm.jet)
ax.set_position([0.12,0.15,.8,.8])
ax.set_ylabel('Log Frequency (Hz)')
ax.set_xlabel('Log Frequency (Hz)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.xaxis.set_minor_formatter(FormatStrFormatter('%d'))
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.tick_params(axis='both',reset=False,which='both',length=8,width=2)
self.plotSetAxisLabels(ax,22)
self.plotSetAxisTickLabels(ax,18)
cbar = fig.colorbar(surf, shrink=0.5, aspect=20, fraction=.12,pad=.02)
cbar.set_label('Activation',size=18)
return ax, cbar
Second Code:
fig = figure(figto)
ax = fig.add_subplot(111)
actShape = activationTrace.shape
semitones = arange(actShape[1])
freqArray = arange(actShape[0])
X,Y = meshgrid(self.testFreqArray,self.testFreqArray)
Z = sum(activationTrace[:,:,beg:end],axis=2)
surf = ax.contourf(X,Y,Z, 8, cmap=cm.jet)
ax.set_position([0.12,0.15,.8,.8])
ax.set_ylabel('Log Frequency (Hz)')
ax.set_xlabel('Log Frequency (Hz)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.xaxis.set_minor_formatter(FormatStrFormatter('%d'))
ax.yaxis.set_minor_formatter(FormatStrFormatter('%d'))
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
ax.tick_params(axis='both',reset=False,which='both',length=8,width=2)
self.plotSetAxisLabels(ax,22)
self.plotSetAxisTickLabels(ax,18)
cbar = fig.colorbar(surf, shrink=0.5, aspect=20, fraction=.12,pad=.02)
cbar.set_label('Activation',size=18)
count = 0
for i in ax.xaxis.get_minorticklabels():
if (count%4 == 0):
i.set_fontsize(12)
else:
i.set_fontsize(0)
count+=1
for i in ax.yaxis.get_minorticklabels():
if (count%4 == 0):
i.set_fontsize(12)
else:
i.set_fontsize(0)
count+=1
return ax, cbar
Đối với colorbar: Một câu hỏi nhanh chóng nếu bạn không nhớ vì cố gắng để tìm ra b ut không hoàn toàn chắc chắn. Tôi muốn sử dụng ký pháp khoa học mà tôi có thể nhận được với ScalarFormatter. Làm cách nào để đặt số chữ số thập phân và số nhân ?? Tôi muốn nó giống như 8x10^8 hoặc .8x10^9 để tiết kiệm không gian thay vì đặt tất cả các số không. Tôi hình có nhiều cách để làm điều này bên trong đối tượng trục nhưng những gì bạn nghĩ là cách tốt nhất. Tôi không thể tìm ra cách thay đổi ký hiệu khi thay đổi thành ScalarFormatter.
Đối với biểu đồ: Ngoài ra, dữ liệu của tôi có điểm bắt đầu từ 46 và sau đó nhân với số nhân nhân với 2^(1/12) nhân với 46,49,50,55,58,61 ... 3132 . Đây là tất cả làm tròn nhưng nằm gần 2^(1/12). Tôi quyết định nên đặt những mã cổ phiếu lớn gần với những con số này. Là cách tốt nhất để sử dụng định dạng cố định và sử dụng một ticker mỗi 15 hoặc hơn trong freqArray. Sau đó, sử dụng một ticker nhỏ ở mọi tần số khác. Tôi có thể làm điều này và vẫn duy trì một trục log ??
Đó là công cụ giao phối tốt. Tôi không nghĩ rằng để sử dụng set_visible ở đây nhưng đó là tốt hơn so với thiết lập phông chữ để kích thước 0 bởi vì nó vẫn còn ít nhất một pixel khi bạn làm điều đó. Tôi muốn đánh dấu đánh dấu ở đó để FixedLocator sẽ không làm việc trong trường hợp này, nhưng tôi làm như vẻ của FuncFormatter. Tôi sẽ gắn bó với những gì tôi có cho bây giờ nhưng có thể cho rằng đi một thời gian tới. Đối với FuncFormatter, nó luôn lấy hai tham số theo thứ tự đó (giá trị, dấu vị trí). –
Đã trả lời câu hỏi của riêng tôi về FuncFormatter vì vậy đừng lo lắng về điều đó. Cảm ơn đống. Trên thực tế chỉ cần thực hiện FuncFormatter vì gần như dễ dàng hơn và giống như sự linh hoạt cực đoan nếu tôi cần phải thay đổi nó trong tương lai làm cho nó thực sự dễ dàng. –
Bạn được chào đón. Rất vui được trợ giúp – Paul