Tôi đang cố gắng hiển thị hai biểu đồ cùng một lúc bằng cách sử dụng matplotlib.
Nhưng tôi phải đóng một biểu đồ sau đó chỉ tôi có thể xem biểu đồ khác. Dù sao thì có cách nào để hiển thị cả biểu đồ hoặc nhiều số đồ thị cùng một lúc.
Đây là mã của tôi
num_pass=np.size[data[0::,1].astype[np.float]]
num_survive=np.sum[data[0::,1].astype[np.float]]
prop=num_survive/num_pass
num_dead=num_pass-num_survive
#print num_dead
labels='Dead','Survived'
sizes=[num_dead,num_survive]
colors=['darkorange','green']
mp.axis['equal']
mp.title['Titanic Survival Chart']
mp.pie[sizes, explode=[0.02,0], labels=labels,colors=colors,autopct='%1.1f%%', shadow=True, startangle=90]
mp.show[]
women_only_stats = data[0::,4] == "female"
men_only_stats = data[0::,4] != "female"
# Using the index from above we select the females and males separately
women_onboard = data[women_only_stats,1].astype[np.float]
men_onboard = data[men_only_stats,1].astype[np.float]
labels='Men','Women'
sizes=[np.sum[women_onboard],np.sum[men_onboard]]
colors=['purple','red']
mp.axis['equal']
mp.title['People on board']
mp.pie[sizes, explode=[0.01,0], labels=labels,colors=colors,autopct='%1.1f%%', shadow=True, startangle=90]
mp.show[]
Làm thế nào tôi có thể hiển thị cả hai biểu đồ cùng một lúc?
Trong hướng dẫn này, chúng tôi sẽ tạo ra các biểu đồ hình tròn với sự trợ giúp của các thư viện gấu trúc và matplotlib.
Điều kiện tiên quyết
Để tạo biểu đồ hình tròn, chúng tôi sẽ cần những điều sau đây:
- Python được cài đặt trên máy của bạninstalled on your machine
- PIP: Hệ thống quản lý gói [đi kèm với Python]package management system [it comes with Python]
- Jupyter Notebook: Một biên tập viên trực tuyến để trực quan hóa dữ liệuan online editor for data visualization
- Pandas: Một thư viện để tạo khung dữ liệu từ các bộ dữ liệu và chuẩn bị dữ liệu để vẽ đồ thị a library to create data frames
from data sets and prepare data for plotting
- Matplotlib: một thư viện âm mưua plotting library
Bạn có thể tải xuống phiên bản mới nhất của Python cho Windows trên trang web chính thức.
Để có được các công cụ khác, bạn sẽ cần cài đặt các bản phân phối Python khoa học được đề xuất. Nhập cái này vào thiết bị đầu cuối của bạn:
pip install numpy scipy matplotlib ipython jupyter pandas sympy nose
Bắt đầu
Tạo một thư mục sẽ chứa sổ ghi chép của bạn [ví dụ: Matplotlib-pie-biểu đồ] và mở máy tính xách tay Jupyter bằng cách nhập lệnh này vào thiết bị đầu cuối của bạn [đừng quên thay đổi đường dẫn]:
cd C:\Users\Shark\Documents\code\matplotlib-pie-chart
py -m notebook
Điều này sẽ tự động mở trang chủ Jupyter tại // localhost: 8888/cây. Nhấp vào nút Mới mới ở góc trên cùng bên phải, chọn phiên bản Python được cài đặt trên máy của bạn và một cuốn sổ sẽ mở trong cửa sổ trình duyệt mới.
Trong dòng đầu tiên của máy tính xách tay, nhập tất cả các thư viện cần thiết:
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
%matplotlib notebook
Bạn sẽ cần dòng cuối cùng [%Matplotlib Notebook] để hiển thị các ô trong các ô đầu vào.
Chuẩn bị dữ liệu
Chúng tôi sẽ tạo ra một loạt các bảng xếp hạng hình tròn cho thấy tội ác ở các quận London. Chúng tôi sẽ sử dụng tệp .csv để vẽ đồ thị. Bạn có thể tải xuống dữ liệu tội phạm của London London, bộ dữ liệu 200820162016 trên Kaggle [London_CRIME_BY_LSOA.CSV].
Trên dòng thứ hai trong sổ ghi chép Jupyter của bạn, hãy nhập mã này để đọc tệp:
df = pd.read_csv['london_crime_by_lsoa.csv']
df.head[]
Điều này sẽ hiển thị 5 dòng đầu tiên của tệp .csv:
Tiếp theo, chuẩn bị dữ liệu cho âm mưu. Để đơn giản, chúng tôi đã giành chiến thắng sử dụng cột giá trị của người Viking và sẽ tập trung vào các cột của Bor Borough và Major Major_carget.
# Select columns you need
df = df[['borough', 'major_category']]
# Group boroughs and crimes and count numbers
df_grouped = df.groupby[['borough', 'major_category']].size[].reset_index[]
# Create a pivot table
table = pd.pivot_table[df_grouped, index=['borough'], columns=['major_category']]
# Delete columns with Nan values and convert to integers
table = table.dropna[axis=1].astype[int]
table
Ở đây, đầu ra:
Âm mưu một biểu đồ hình tròn
Để bắt đầu, hãy để Lôi tạo một biểu đồ hình tròn matplotlib duy nhất.
Dưới đây là các biến chúng tôi sẽ cần [màu sắc biểu đồ Matplotlib, tiêu đề, nhãn, v.v.]:
row_num = [5] # No. of the row
font_color = '#525252'
colors = ['#f7ecb0', '#ffb3e6', '#99ff99', '#66b3ff', '#c7b3fb','#ff6666', '#f9c3b7']
values = table.iloc[row_num].values.tolist[][0] # crime numbers
labels = [x[1] for x in table.columns] # crime names
title = table.iloc[row_num].index.values.tolist[][0] # borough
Plotting:
# Create subplots and a pie chart
fig, ax = plt.subplots[figsize=[10, 7], facecolor='#e8f4f0']
ax.pie[values, labels=labels, colors=colors, startangle=30, textprops={'color':font_color}]
# Set title, its position, and font size
title = plt.title[title, fontsize=16, color=font_color]
title.set_position[[.5, 1.02]]
mpl.rcParams['font.size'] = 16.0
Đây là kết quả:
Lưu các tập tin:
filename = 'pie-chart-single'
plt.savefig[filename+'.png', facecolor=['#e8f4f0']]
Bạn có thể cần lặp lại facecolor trong savefig []. Nếu không, plt.savefig có thể bỏ qua nó.
Âm mưu nhiều biểu đồ bánh rán
Bây giờ chúng tôi sẽ tạo ra nhiều biểu đồ Matplotlib Pie [Donut] với một huyền thoại. Chúng tôi sẽ vẽ nhiều biểu đồ trong một hình với một vòng lặp, trong một tập lệnh.
Tất cả các đoạn mã bên dưới nên được đặt bên trong một ô trong sổ ghi chép Jupyter của bạn.
1. Đặt các biến phông chữ và màu
font_color = '#525252'
colors = ['#f7ecb0', '#ffb3e6', '#99ff99', '#66b3ff', '#c7b3fb','#ff6666', '#f9c3b7']
2. Tạo một con số và các ô phụ
pip install numpy scipy matplotlib ipython jupyter pandas sympy nose
0Các ô phụ [3, 3] sẽ tạo 9 ô con, với 3 hàng và 3 cột. Giá trị đầu tiên là số lượng hàng và cái thứ hai là số lượng cột.
FIGSIZE = [10, 10] sẽ tạo ra hình 1000 × 1000 pixel.
Hình.Delaxes [AX = AXES [2,2]] sẽ loại bỏ các ô phụ cuối cùng để xóa một không gian cho truyền thuyết. Do đó, chúng tôi sẽ tạo ra 9 ô con với 8 biểu đồ.
3. Vẽ biểu đồ hình tròn với một huyền thoại
Chúng tôi sẽ sử dụng vòng lặp để lặp lại các hàng và tạo biểu đồ hình tròn cho mỗi người trong số chúng. Chúng tôi chỉ lặp lại 8 hàng trong ví dụ này vì vậy chúng tôi sử dụng bảng.head [8] thay vì bảng.
wedgeprops = dict [width = .5] sẽ tạo ra bánh rán [biểu đồ hình tròn có lỗ ở trung tâm]. Don Tiết sử dụng đối số này, và bạn sẽ nhận được biểu đồ hình tròn thay vì biểu đồ bánh rán.
Nhãn = row.values sẽ hiển thị các giá trị [số tội phạm] và nhãn = [x [1] cho x in row.index] sẽ hiển thị tên tội phạm. Để tạo một huyền thoại, chúng tôi sử dụng [x [1] cho x trong hàng.index] [và không phải row.index] vì chúng tôi muốn truy cập giá trị thứ hai trong danh sách các bộ dữ liệu, là row.index.
pip install numpy scipy matplotlib ipython jupyter pandas sympy nose
1Ở đây, kết quả cuối cùng:
4. Lưu biểu đồ dưới dạng hình ảnh
pip install numpy scipy matplotlib ipython jupyter pandas sympy nose
2Đó là nó, các biểu đồ hình tròn matplotlib của chúng tôi đã sẵn sàng. Bạn có thể tải xuống sổ ghi chép trên GitHub để có được mã đầy đủ.You can download the notebook on GitHub to get the full code.
Đọc thêm:
→ matplotlib: biểu đồ thanh lỗi
→ matplotlib: đồ thị thanh đôi