Tôi cần một số trợ giúp tạo một bộ biểu đồ thanh xếp chồng lên nhau trong python với matlibplot. Mã cơ bản của tôi là dưới đây nhưng vấn đề của tôi là làm thế nào để tạo ra giá trị cho dưới cùng cho bất kỳ phần tử nào vượt ra ngoài phần thứ hai hiệu quả. Tôi có thể lấy ví dụ đồ thị để ngăn xếp một cách chính xác (luôn a, b, c, d từ dưới lên trên)Biểu đồ thanh xếp chồng matplotlib hiệu quả hơn - cách tính các giá trị dưới cùng
import numpy as np
import matplotlib.pyplot as plt
ind = np.arange(3)
a = [3,6,9]
b = [2,7,1]
c = [0,3,1]
d = [4,0,3]
p1 = plt.bar(ind, a, 1, color='#ff3333')
p2 = plt.bar(ind, b, 1, color='#33ff33', bottom=a)
p3 = plt.bar(ind, c, 1, color='#3333ff', bottom=[a[j] +b[j] for j in range(len(a))])
p4 = plt.bar(ind, d, 1, color='#33ffff', bottom=[a[j] +b[j] +c[j] for j in range(len(a))])
plt.show()
mã cuối cùng của tôi có thể có số lượng rất lớn các quán bar và các chức năng bao giờ mở rộng đáy = [.. .] không thể là giải pháp tốt nhất. Nó sẽ là tuyệt vời nếu bạn cũng có thể giải thích làm thế nào tôi cần phải lấy được giá trị. Có chức năng numpy không.
Cảm ơn bạn rất nhiều !!! PS Tôi đã tìm kiếm câu trả lời nhưng tôi không hiểu những gì tôi có thể tìm thấy.
Cảm ơn - làm thế nào tôi có thể nhận khoảng cách giữa các thanh? – Matt
Tôi đã cập nhật mã để cho phép các khoảng trống. Nó thực sự khá đơn giản, nếu bạn khấu trừ một số tiền cố định từ độ rộng của các thanh sau đó nó có hiệu quả thu nhỏ chúng. Sau đó nó chỉ là vấn đề chơi với xlims. Các cuộc gọi chức năng chính bây giờ có hai paramters mới, khoảng cách và endGaps, Hai hình ảnh dưới đây cho thấy các ví dụ về việc sử dụng. – minillinim
Yêu gói của minillinim. Nó cảm thấy quá dễ dàng. Để thêm chú giải, nếu bạn đặt màu với một mảng như 'stacked_colors = ['# 2166ac', '# fee090', '# fdbb84']' và 'cols = stacked_colors', thì việc thêm chú thích vào một âm mưu làm từ một DataFrame gấu trúc: 'huyền thoại = [] i = 0 cho cột trong df.columns: legends.append (mpatches.Patch (color = stacked_colors [i], label = cột)) i + = 1 plt.legend (handles = legends) ' –