2013-12-15 22 views
7

Tôi mới dùng matplotlib và tôi đang cố sử dụng nó trong gấu trúc để vẽ một số biểu đồ đơn giản. Tôi có một DataFrame có chứa hai nhãn "điểm" và "người", bắt nguồn từ một DF khác.Tùy biến đơn giản biểu đồ thanh matplotlib/gấu trúc (nhãn, ve, v.v ..)

df1 = DataFrame(df, columns=['score','person']) 

Sản xuất sản lượng này:

table output

tôi đang cố gắng để tạo ra một biểu đồ thanh đơn giản, thể hiện mỗi người trong màu sắc khác nhau, và đây là những gì tôi có cho đến nay:

df1.plot(kind='bar', title='Ranking') 

bar chart

Tôi có thể làm như thế nào tomize nó để biểu đồ cho thấy tên người trong trục x với màu sắc độc đáo và loại bỏ các "khung" xung quanh con số? Làm thế nào tôi có thể làm cho nó một biểu đồ thanh ngang?

Cảm ơn trước sự giúp đỡ của bạn.

+4

tôi chỉ muốn nói rằng tôi yêu kỹ năng vẽ của bạn và sẽ trả tiền để xuất biểu đồ của tôi như vậy – swyx

+2

@swyx: chúng được tạo bởi matplot Tính năng lib: * [các ô kiểu xkcd] (http://matplotlib.org/xkcd/examples/showcase/xkcd.html) *, được truyền cảm hứng lần lượt bởi [câu hỏi này trên Mathematica.SX] (https: // mathematica. stackexchange.com/questions/11350/xkcd-style-graphs). – ojdo

+0

@ojdo cảm ơn! Tôi có nghĩa là để làm rõ rằng một thời gian trước đây –

Trả lời

9

Tôi đoán đây sẽ cho bạn ý tưởng:

df = pd.DataFrame({'score':np.random.randn(6), 
        'person':[x*3 for x in list('ABCDEF')]}) 

ax = plt.subplot(111) 
df.score.plot(ax=ax, kind='barh', color=list('rgbkym'), title='ranking') 
ax.axis('off') 
for i, x in enumerate(df.person): 
    ax.text(0, i + .5, x, ha='right', fontsize='large') 

cho

person score 
0 AAA 1.79 
1 BBB 0.31 
2 CCC -0.52 
3 DDD 1.59 
4 EEE 0.59 
5 FFF -1.03 

bạn sẽ nhận được:

hbar

+0

Cảm ơn bạn. Làm thế nào bạn sẽ xếp hạng thứ tự và hiển thị các giá trị cho mỗi thanh? (tức là 1,79 đối với AAA ở vị trí đầu tiên từ trên xuống dưới, DDD ở vị trí thứ hai, vv?). –

+0

@LuisMiguel bạn có thể sử dụng 'ax.text (x, y, string)' để thêm văn bản bổ sung vào ô tại vị trí (x, y). thứ tự giống như trong chuỗi/khung dữ liệu –

+2

@LuisMiguel điều này có thể hữu ích: http://stackoverflow.com/questions/19917587/matplotlib-advanced-bar-plot/19919397#19919397 –

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