2016-04-01 22 views
16

Với matplotlib, tôi có thể tạo biểu đồ với hai tập dữ liệu trên một ô (một bên cạnh ô kia chứ không phải lớp phủ).Làm thế nào để vẽ nhiều biểu đồ trên cùng một lô với Seaborn

import matplotlib.pyplot as plt 
import random 

x = [random.randrange(100) for i in range(100)] 
y = [random.randrange(100) for i in range(100)] 
plt.hist([x, y]) 
plt.show() 

Điều này mang lại cốt truyện sau.

enter image description here

Tuy nhiên, khi tôi cố gắng làm điều này với seabron;

import seaborn as sns 
sns.distplot([x, y]) 

tôi nhận được lỗi sau:

ValueError: color kwarg must have one color per dataset 

Vì vậy, sau đó tôi cố gắng thêm một số giá trị màu:

sns.distplot([x, y], color=['r', 'b']) 

Và tôi nhận được lỗi tương tự. Tôi đã thấy this post về cách che phủ biểu đồ, nhưng tôi muốn các biểu đồ này nằm cạnh nhau chứ không phải lớp phủ.

Và nhìn vào docs, nó không chỉ định cách bao gồm danh sách các danh sách làm đối số đầu tiên 'a'.

Làm thế nào tôi có thể đạt được kiểu biểu đồ này bằng cách sử dụng bẩm sinh?

Trả lời

21

Nếu tôi hiểu bạn một cách chính xác bạn có thể muốn thử một cái gì đó này:

fig, ax = plt.subplots() 
for a in [x, y]: 
    sns.distplot(a, bins=range(1, 110, 10), ax=ax, kde=False) 
ax.set_xlim([0, 100]) 

nào nên tạo ra một cốt truyện như thế này:

enter image description here

CẬP NHẬT:

vẻ giống như bạn muốn 'nhìn bẩm sinh' hơn là chức năng âm mưu của seaborn. Đối với điều này, bạn chỉ cần:

import seaborn as sns 
plt.hist([x, y], color=['r','b'], alpha=0.5) 

Mà sẽ sản xuất:

enter image description here

+0

này trông giống như một lớp phủ, nhưng là có một cách để có được những quán bar cạnh nhau thay vì chồng? – Malonge

+0

Tôi đã cập nhật câu trả lời - hy vọng điều này sẽ hữu ích. – Primer

+0

Làm thế nào bạn có thể tạo một biểu đồ trong bẩm sinh từ các bản phân phối, x và y trong ví dụ của bạn, quá lớn để giữ trong bộ nhớ? –

Các vấn đề liên quan