sách gpt4 ai đã đi

Nhiều imshow-subplots, mỗi cái có thanh màu - Stack Overflow

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 22:21:20 35 4
mua khóa gpt4 Nike

Tôi muốn có một hình ảnh bao gồm bốn cốt truyện phụ. Hai trong số đó là các biểu đồ đường thông thường và hai trong số đó là imshow-images.

Tôi có thể định dạng imshow-images thành các biểu đồ thích hợp, vì mỗi biểu đồ cần có thanh màu riêng, các trục được sửa đổi và loại bỏ các trục khác. Tuy nhiên, điều này dường như không có tác dụng gì đối với đồ thị con. Có ai có thể giúp tôi giải quyết vấn đề này không?

Tôi sử dụng điều này để hiển thị dữ liệu cho biểu đồ "thông thường" ở trên dưới dạng bản đồ màu (bằng cách truyền mảng đầu vào Tôi Phóng to tới [ tôi, tôi, tôi, tôi, tôi, tôi ] cho 2D và gọi nó bằng imshow().

Đoạn mã bên dưới đầu tiên hiển thị các sơ đồ phụ mà tôi cần, đoạn mã thứ hai hiển thị mọi thứ tôi có thể làm, nhưng vẫn chưa đủ.

#!/usr/bin/env python

nhập matplotlib.pyplot dưới dạng plt
từ matplotlib.colors nhập LogNorm

s = { 't':1, 'x':[1,2,3,4,5,6,7,8], 'D':[0,3,0,5,0,2,0,3,0,5,0,5,0,3,0,4] }
chiều rộng = 40

# cách tôi thực hiện nó chỉ trong một âm mưu
tổng = []
đối với i trong phạm vi (chiều rộng):
tot.append(s['D'])

plt.imshow(tổng, chuẩn=LogNorm(vmin=0.001, vmax=1))
plt. thanh màu()
plt.axes().axes.get_xaxis().set_visible(Sai)
plt.yticks([0, 2, 4, 6], [s['x'][0], s['x'][2], s['x'][4], s['x'][6]])

plt.hiển thị()


f = plt.figure(figsize=(20,20))

plt.subplot(211)
plt.plot(s['x'], s['D'])
plt.ylim([0, 1])

#biểu đồ màu
sp = f.add_subplot(212)

#reshape (chỉ cần thiết để nhìn thấy điều gì đó)
tổng = []
đối với i trong phạm vi (chiều rộng):
tot.append(s['D'])

sp.imshow(tổng, chuẩn=LogNorm(vmin=0.001, vmax=1))

#những gì tôi không thể làm bây giờ nhưng cần phải làm:
#sp. thanh màu()
#sp.axes().axes.get_xaxis().set_visible(Sai)
#sp.yticks([0, 200, 400, 600, 800, 1000], [s['x'][0], s['x'][200], s['x'][400], s['x'][600], s['x'][800], s['x'][1000]])

plt.hiển thị()

1 Câu trả lời

Bạn có thể sử dụng giao diện hướng đối tượng matplotlibs thay vì giao diện máy trạng thái để kiểm soát tốt hơn từng trục. Ngoài ra, để kiểm soát chiều cao/chiều rộng của thanh màu, bạn có thể sử dụng Lưới trục Bộ công cụ matplotlib.

Ví dụ:

nhập matplotlib.pyplot dưới dạng plt
nhập numpy dưới dạng np
từ mpl_toolkits.axes_grid1 nhập make_axes_locatable
từ matplotlib.colors nhập LogNorm
từ matplotlib.ticker nhập MultipleLocator

s = {'t': 1,
'x': [1, 2, 3, 4, 5, 6, 7, 8],
'T': [0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8],
'D': [0,3, 0,5, 0,2, 0,3, 0,5, 0,5, 0,3, 0,4]}

chiều rộng = 40

tot = np.repeat(s['D'], width).reshape(len(s['D']), width)
tot2 = np.repeat(s['T'], width).reshape(len(s['D']), width)

hình, (ax1, ax2, ax3, ax4) = plt.subplots(1,4)

fig.suptitle('Tiêu đề của hình ảnh', fontsize=20)

# Biểu đồ đường
ax1.set_title('Tiêu đề của ax1')
ax1.plot(s['x'], s['T'])
ax1.set_ylim(0,1)

ax2.set_title('Tiêu đề của ax2')
ax2.plot(s['x'], s['D'])
# Đặt vị trí của các vạch trên trục y (tại mỗi bội số của 0,25)
ax2.yaxis.set_major_locator(Nhiều vị trí(0,25))
# Đặt vị trí của các vạch trên trục x (tại mỗi bội số của 2)
ax2.xaxis.set_major_locator(Nhiều vị trí(2))
ax2.set_ylim(0,1)

ax3.set_title('Tiêu đề của ax3')
# Hiển thị hình ảnh, `aspect='auto'` làm cho nó lấp đầy toàn bộ `axes` (ax3)
im3 = ax3.imshow(tot, norm=LogNorm(vmin=0.001, vmax=1), aspect='tự động')
# Tạo bộ chia cho trường hợp trục hiện có
divider3 = make_axes_locatable(ax3)
# Thêm trục vào bên phải của ax3, với chiều rộng 20% ​​của ax3
cax3 = divider3.append_axes("phải", kích thước="20%", pad=0.05)
# Tạo thanh màu trong các trục được thêm vào
# Vị trí tích tắc có thể được thiết lập bằng kwarg `ticks`
# và định dạng của ticklabels với kwarg `format`
cbar3 = plt.colorbar(im3, cax=cax3, ticks=MultipleLocator(0.2), định dạng="%.2f")
# Xóa xticks khỏi ax3
ax3.xaxis.set_visible(Sai)
# Đặt vị trí tích tắc theo cách thủ công
ax3.set_yticks([0.0, 2.5, 3.14, 4.0, 5.2, 7.0])

ax4.set_title('Tiêu đề của ax4')
im4 = ax4.imshow(tot2, norm=LogNorm(vmin=0.001, vmax=1), aspect='tự động')
divider4 = make_axes_locatable(ax4)
cax4 = divider4.append_axes("phải", kích thước="20%", pad=0.05)
cbar4 = plt.colorbar(im4, cax=cax4)
ax4.xaxis.set_visible(Sai)
# Đặt nhãn tích tắc thủ công (không phải vị trí tích tắc, chúng vẫn không thay đổi)
ax4.set_yticklabels([0, 50, 30, 'foo', 'bar', 'baz'])

plt.tight_layout()
# Tạo khoảng trống cho tiêu đề
plt.subplots_adjust(top=0.85)
plt.hiển thị()

nhập mô tả hình ảnh ở đây


Bạn có thể sử dụng thiết lập_tickthiết lập_nhãn_đánh_dấu phương pháp thay đổi vị trí và nhãn của các vạch trên mỗi trục, như thể hiện trong ví dụ trên.


Vềmake_axes_locatable Chức năng này xuất phát từtrang web matplotlib về bộ công cụ AxesGrid :

Mô-đun axes_divider cung cấp một hàm trợ giúp make_axes_locatable, có thể hữu ích. Nó lấy một thể hiện axes hiện có và tạo một divider cho thể hiện đó.

ax = subplot(1,1,1)
divider = make_axes_locatable(ax)

make_axes_locatable trả về một thể hiện của lớp AxesLocator, được bắt nguồn từ Locator. Nó cung cấp phương thức append_axes tạo ra các trục mới ở phía đã cho ("trên cùng", "phải", "dưới cùng" và "trái") của các trục ban đầu.

Liên quan đến python - nhiều imshow-subplot, mỗi imshow có thanh màu, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/18266642/

35 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com