Hai bản đồ nhiệt cạnh nhau

Xin chào @Bee, có lẽ hai ô con của bạn có mỗi ô màu và hai ô này thực sự chồng lên nhau. Bạn có thể sử dụng một coloraxis phổ biến thay vì như mô tả

import plotly.graph_objects as go
from plotly.subplots import make_subplots

fig = make_subplots(1,2)

fig.add_trace(
 go.Heatmap(x = [1, 2, 3, 4], z = [[1, 2, 3, 4], [4, -3, -1, 1]], coloraxis = "coloraxis"), 1,1)

fig.add_trace(
 go.Heatmap(x = [3, 4, 5, 6], z = [[10, 2, 1, 0], [4, 3, 5, 6]], coloraxis = "coloraxis"),1,2)
fig.update_layout(coloraxis = {'colorscale':'viridis'})

fig.show()

Tôi có 2 bảng dữ liệu với kích thước 4x25. Mỗi bảng đến từ một thời điểm khác nhau, nhưng có cùng một siêu dữ liệu, về bản chất là các tiêu đề hàng và cột giống nhau

Với số lượng lớn các cột, tôi nghĩ tốt nhất nên biểu diễn điều này bằng cách sử dụng heatmap sử dụng thư viện seaborn cho Python. Tuy nhiên, tôi cần bao gồm cả hai bảng trong cùng một ô. Tôi có thể tạo một bản đồ nhiệt duy nhất đại diện cho một bảng dữ liệu như vậy

df = pd.DataFrame(raw_data)
ax = sns.heatmap(df)
ax.set(yticklabels=labels)

Tuy nhiên, tôi không chắc làm cách nào để kết hợp hai bảng dữ liệu vào cùng một bản đồ nhiệt. Cách duy nhất tôi có thể nghĩ ra là chỉ cần tạo một DataFrame mới có kích thước 4x50 rồi khớp cả hai bảng vào bảng đó và vẽ biểu đồ đó bằng bản đồ nhiệt. Nhưng sau đó, tôi cần trợ giúp với các vấn đề sau

  1. Tôi không chắc làm cách nào để vẽ một đường ở giữa bản đồ nhiệt để phân biệt dữ liệu từ 2 bảng. Người đọc sẽ khó chịu khi thấy các cột bắt đầu lặp lại ở đâu để nhận ra dữ liệu mới bắt đầu từ đâu
  2. Một giải pháp thậm chí còn tốt hơn là áp dụng 2 lược đồ tô màu khác nhau cho 2 bộ dữ liệu trong cùng một bản đồ nhiệt thay vì chỉ vẽ một đường ở giữa

Bất kỳ trợ giúp với các vấn đề trên sẽ rất hữu ích

Ghi chú. Tôi không muốn biểu diễn dữ liệu như tôi đã đề xuất ở trên hoặc thậm chí sử dụng bản đồ nhiệt. Nếu có những gợi ý khác cho âm mưu, xin vui lòng cho tôi biết

Matplotlib là thư viện Python phổ biến nhất để vẽ biểu đồ và trực quan hóa dữ liệu của chúng tôi. Trong Matplotlib, chúng ta có thể tạo nhiều ô bằng cách gọi chúng một lần. Để tạo nhiều ô ta sử dụng hàm subplot của module pyplot trong Matplotlib

cú pháp. plt. ô con (nút,. ncolumn, chỉ mục)

Thông số

  • nrows dành cho số lượng hàng có nghĩa là nếu hàng là 1 thì các ô nằm ngang
  • ncolumns là viết tắt của cột có nghĩa là nếu cột là 1 thì cốt truyện nằm theo chiều dọc
  • và chỉ mục là số lượng/chỉ mục của các ô. Nó bắt đầu với 1

Tiếp cận

  • Nhập thư viện và mô-đun
  • Tạo dữ liệu cho cốt truyện
  • Bây giờ, hãy tạo một ô con bằng chức năng trên
  • Đặt tham số cho hàm theo yêu cầu

ví dụ 1

Python3




# importing libraries

import numpy as np

import matplotlib.pyplot as plt

 

 

# creating an array of data for x-axis

x= np.array([# importing libraries0# importing libraries1# importing libraries2# importing libraries1# importing libraries4# importing libraries1# importing libraries6# importing libraries1# importing libraries8# importing libraries1import0# importing libraries1import2# importing libraries1import4# importing libraries1import6# importing libraries1import8import9

tạo một hình và một lưới các ô con chỉ bằng một lệnh gọi, đồng thời cung cấp quyền kiểm soát hợp lý đối với cách các ô riêng lẻ được tạo. Đối với các trường hợp sử dụng nâng cao hơn, bạn có thể sử dụng để bố trí ô con tổng quát hơn hoặc để thêm các ô con tại các vị trí tùy ý trong hình

import matplotlib.pyplot as plt
import numpy as np

# Some example data to display
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

Một hình chỉ với một subplot

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
8 không có đối số trả về a và một

Đây thực sự là cách đơn giản nhất và được khuyên dùng để tạo một Hình và Trục

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')

Hai bản đồ nhiệt cạnh nhau

Xếp chồng các ô con theo một hướng

Hai đối số tùy chọn đầu tiên xác định số lượng hàng và cột của lưới ô con

Khi chỉ xếp chồng theo một hướng,

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
2 được trả về là một mảng numpy 1D chứa danh sách các Trục đã tạo

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)

Hai bản đồ nhiệt cạnh nhau

Nếu bạn chỉ đang tạo một vài Trục, bạn có thể giải nén chúng ngay lập tức thành các biến chuyên dụng cho từng Trục. Bằng cách đó, chúng ta có thể sử dụng

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
3 thay vì dài dòng hơn
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
4

fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)

Hai bản đồ nhiệt cạnh nhau

Để có được các ô con cạnh nhau, hãy truyền tham số

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
5 cho một hàng và hai cột

fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Horizontally stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)

Hai bản đồ nhiệt cạnh nhau

Xếp chồng các ô con theo hai hướng

Khi xếp chồng theo hai hướng,

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
2 được trả về là một mảng NumPy 2D

Nếu bạn phải đặt tham số cho từng ô con, sẽ rất hữu ích khi lặp lại tất cả các ô con trong lưới 2D bằng cách sử dụng

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
7

fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Axis [0, 0]')
axs[0, 1].plot(x, y, 'tab:orange')
axs[0, 1].set_title('Axis [0, 1]')
axs[1, 0].plot(x, -y, 'tab:green')
axs[1, 0].set_title('Axis [1, 0]')
axs[1, 1].plot(x, -y, 'tab:red')
axs[1, 1].set_title('Axis [1, 1]')

for ax in axs.flat:
    ax.set(xlabel='x-label', ylabel='y-label')

# Hide x labels and tick labels for top plots and y ticks for right plots.
for ax in axs.flat:
    ax.label_outer()

Hai bản đồ nhiệt cạnh nhau

Bạn cũng có thể sử dụng giải nén bộ trong 2D để gán tất cả các ô con cho các biến chuyên dụng

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.suptitle('Sharing x per column, y per row')
ax1.plot(x, y)
ax2.plot(x, y**2, 'tab:orange')
ax3.plot(x, -y, 'tab:green')
ax4.plot(x, -y**2, 'tab:red')

for ax in fig.get_axes():
    ax.label_outer()

Hai bản đồ nhiệt cạnh nhau

Trục chia sẻ

Theo mặc định, mỗi Trục được chia tỷ lệ riêng lẻ. Do đó, nếu các phạm vi khác nhau, các giá trị đánh dấu của các ô con không thẳng hàng

fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Axes values are scaled individually by default')
ax1.plot(x, y)
ax2.plot(x + 1, -y)

Hai bản đồ nhiệt cạnh nhau

Bạn có thể dùng sharex hoặc sharey để căn chỉnh trục ngang hoặc trục dọc

fig, (ax1, ax2) = plt.subplots(2, sharex=True)
fig.suptitle('Aligning x-axis using sharex')
ax1.plot(x, y)
ax2.plot(x + 1, -y)

Hai bản đồ nhiệt cạnh nhau

Đặt sharex hoặc sharey thành

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
8 cho phép chia sẻ toàn cầu trên toàn bộ lưới, tôi. e. đồng thời trục y của các ô con xếp chồng lên nhau theo chiều dọc có cùng tỷ lệ khi sử dụng
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
9

fig, axs = plt.subplots(3, sharex=True, sharey=True)
fig.suptitle('Sharing both axes')
axs[0].plot(x, y ** 2)
axs[1].plot(x, 0.3 * y, 'o')
axs[2].plot(x, y, '+')

Hai bản đồ nhiệt cạnh nhau

Đối với các ô con đang chia sẻ trục, một bộ nhãn đánh dấu là đủ. Nhãn đánh dấu của các Trục bên trong sẽ tự động bị xóa bởi sharex và sharey. Vẫn còn một khoảng trống chưa sử dụng giữa các ô con

Để kiểm soát chính xác vị trí của các ô con, người ta có thể tạo rõ ràng một with và sau đó gọi phương thức của nó. Ví dụ: chúng ta có thể giảm chiều cao giữa các ô con dọc bằng cách sử dụng

fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
3

là một phương pháp tiện dụng để xóa nhãn và dấu tích khỏi các ô con không nằm ở rìa của lưới

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
0

Hai bản đồ nhiệt cạnh nhau

Ngoài

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
8 và
fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
6, cả sharex và sharey đều chấp nhận các giá trị 'hàng' và 'col' để chỉ chia sẻ các giá trị trên mỗi hàng hoặc cột

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
1

Hai bản đồ nhiệt cạnh nhau

Nếu bạn muốn có một cấu trúc chia sẻ phức tạp hơn, trước tiên bạn có thể tạo lưới các trục không có chia sẻ, sau đó gọi hoặc thêm thông tin chia sẻ vào sau

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
2

Hai bản đồ nhiệt cạnh nhau

trục cực

Tham số subplot_kw của điều khiển các thuộc tính của subplot (xem thêm). Đặc biệt, điều này có thể được sử dụng để tạo một lưới các trục cực