Biểu đồ matplotlib được sử dụng để trực quan hóa sự phân bố tần số của mảng số bằng cách chia nó thành các thùng có kích thước bằng nhau nhỏ. Trong bài viết này, chúng tôi khám phá các kỹ thuật thực tế cực kỳ hữu ích trong phân tích dữ liệu ban đầu của bạn.
Nội dung
- Biểu đồ là gì?
- Làm thế nào để vẽ một biểu đồ cơ bản trong Python?
- Biểu đồ được nhóm theo các danh mục trong cùng một cốt truyện
- Biểu đồ được nhóm theo các danh mục trong các ô con riêng biệt
- Biểu đồ biển và đường cong mật độ trên cùng một lô
- Biểu đồ và đường cong mật độ trong các mặt
- Sự khác biệt giữa biểu đồ và biểu đồ thanh
- Thực hành tập thể dục
- Sự kết luận
1. Biểu đồ là gì?
Biểu đồ là một biểu đồ phân phối tần số của mảng số bằng cách chia nó thành các thùng có kích thước bằng nhỏ.
Nếu bạn muốn phân chia toán học một mảng nhất định thành các thùng và tần số, hãy sử dụng phương pháp 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 3 numpy và in đẹp như bên dưới.
import numpy as np x = np.random.randint(low=0, high=100, size=100) # Compute frequency and bins frequency, bins = np.histogram(x, bins=10, range=[0, 100]) # Pretty Print for b, f in zip(bins[1:], frequency): print(round(b, 1), ' '.join(np.repeat('*', f)))Đầu ra của mã trên trông như thế này:
10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * *Tuy nhiên, đại diện trên, won đã thực tế trên các mảng lớn, trong trường hợp đó, bạn có thể sử dụng biểu đồ matplotlib.
2. Làm thế nào để vẽ một biểu đồ cơ bản trong Python?
10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 4 trong matplotlib cho phép bạn vẽ biểu đồ. Nó yêu cầu mảng là đầu vào cần thiết và bạn có thể chỉ định số lượng thùng cần thiết.
import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); Histogram3. Biểu đồ được nhóm theo các danh mục trong cùng một cốt truyện
Bạn có thể vẽ đồ thị nhiều biểu đồ trong cùng một cốt truyện. Điều này có thể hữu ích nếu bạn muốn so sánh phân phối của một biến liên tục được nhóm theo các danh mục khác nhau.
Hãy để sử dụng bộ dữ liệu kim cương từ gói RTHER GGPLOT2.
import pandas as pd df = pd.read_csv('//raw.githubusercontent.com/selva86/datasets/master/diamonds.csv') df.head() DiamondsHãy để so sánh phân phối 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 5 cho 3 giá trị khác nhau của 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 6 trong cùng một lô.
Biểu đồ x1 = df.loc[df.cut=='Ideal', 'depth'] x2 = df.loc[df.cut=='Fair', 'depth'] x3 = df.loc[df.cut=='Good', 'depth'] kwargs = dict(alpha=0.5, bins=100) plt.hist(x1, **kwargs, color='g', label='Ideal') plt.hist(x2, **kwargs, color='b', label='Fair') plt.hist(x3, **kwargs, color='r', label='Good') plt.gca().set(title='Frequency Histogram of Diamond Depths', ylabel='Frequency') plt.xlim(50,75) plt.legend(); MultiVâng, các phân phối cho 3 vết cắt khác nhau là khác nhau khác nhau. Nhưng vì, số lượng các dữ liệu được cắt giảm nhiều hơn cho 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 7, nó chiếm ưu thế hơn.
Vì vậy, làm thế nào để khắc phục lớp chiếm ưu thế và vẫn duy trì tính tách biệt của các bản phân phối?
Bạn có thể bình thường hóa nó bằng cách đặt 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 8 và 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 9. Bằng cách này, tổng diện tích trong mỗi phân phối trở thành 1.
# Normalize kwargs = dict(alpha=0.5, bins=100, density=True, stacked=True) # Plot plt.hist(x1, **kwargs, color='g', label='Ideal') plt.hist(x2, **kwargs, color='b', label='Fair') plt.hist(x3, **kwargs, color='r', label='Good') plt.gca().set(title='Probability Histogram of Diamond Depths', ylabel='Probability') plt.xlim(50,75) plt.legend(); Multi Biểu đồ 24. Biểu đồ được nhóm theo các danh mục trong các ô con riêng biệt
Biểu đồ có thể được tạo như các khía cạnh sử dụng import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 0
Dưới đây tôi vẽ một biểu đồ của 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 5 cho mỗi loại 10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 6. Nó thuận tiện để làm điều đó trong một vòng lặp.
# Import Data df = pd.read_csv('//raw.githubusercontent.com/selva86/datasets/master/diamonds.csv') # Plot fig, axes = plt.subplots(1, 5, figsize=(10,2.5), dpi=100, sharex=True, sharey=True) colors = ['tab:red', 'tab:blue', 'tab:green', 'tab:pink', 'tab:olive'] for i, (ax, cut) in enumerate(zip(axes.flatten(), df.cut.unique())): x = df.loc[df.cut==cut, 'depth'] ax.hist(x, alpha=0.5, bins=100, density=True, stacked=True, label=str(cut), color=colors[i]) ax.set_title(cut) plt.suptitle('Probability Histogram of Diamond Depths', y=1.05, size=16) ax.set_xlim(50, 70); ax.set_ylim(0, 1); plt.tight_layout(); Histograms khía cạnh5. Biểu đồ biển và đường cong mật độ trên cùng một lô
Nếu bạn muốn có cả biểu đồ và mật độ trong cùng một lô, gói Seaborn (được nhập dưới dạng import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 3) cho phép bạn thực hiện điều đó thông qua import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 4. Vì Seaborn được xây dựng trên đỉnh của matplotlib, bạn có thể sử dụng import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 3 và import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 6 lần lượt.
Nhận khóa học Python hoàn thành miễn phí
Đối mặt với tình huống tương tự như mọi người khác?
Xây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị.
Nhận khóa học Python hoàn thành miễn phí
Xây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị.
import seaborn as sns sns.set_style("white") # Import data df = pd.read_csv('//raw.githubusercontent.com/selva86/datasets/master/diamonds.csv') x1 = df.loc[df.cut=='Ideal', 'depth'] x2 = df.loc[df.cut=='Fair', 'depth'] x3 = df.loc[df.cut=='Good', 'depth'] # Plot kwargs = dict(hist_kws={'alpha':.6}, kde_kws={'linewidth':2}) plt.figure(figsize=(10,7), dpi= 80) sns.distplot(x1, color="dodgerblue", label="Compact", **kwargs) sns.distplot(x2, color="orange", label="SUV", **kwargs) sns.distplot(x3, color="deeppink", label="minivan", **kwargs) plt.xlim(50,75) plt.legend(); Histograms Mật độ6. Biểu đồ và đường cong mật độ trong các mặt
Ví dụ dưới đây cho thấy cách vẽ biểu đồ và mật độ (import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 7) trong các khía cạnh.
# Import data df = pd.read_csv('//raw.githubusercontent.com/selva86/datasets/master/diamonds.csv') x1 = df.loc[df.cut=='Ideal', ['depth']] x2 = df.loc[df.cut=='Fair', ['depth']] x3 = df.loc[df.cut=='Good', ['depth']] # plot fig, axes = plt.subplots(1, 3, figsize=(10, 3), sharey=True, dpi=100) sns.distplot(x1 , color="dodgerblue", ax=axes[0], axlabel='Ideal') sns.distplot(x2 , color="deeppink", ax=axes[1], axlabel='Fair') sns.distplot(x3 , color="gold", ax=axes[2], axlabel='Good') plt.xlim(50,75); Histogram Mật độ các khía cạnh7. Sự khác biệt giữa biểu đồ và biểu đồ thanh
Một biểu đồ được vẽ trên các mảng lớn. Nó tính toán phân phối tần số trên một mảng và tạo ra một biểu đồ từ nó.
Mặt khác, biểu đồ thanh được sử dụng khi bạn có cả X và Y đã cho và có số lượng điểm dữ liệu hạn chế có thể được hiển thị dưới dạng thanh.
# Groupby: cutwise median price = df[['cut', 'price']].groupby('cut').median().round(2) price Diamonds_Cut10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 0Barplots8. Thực hành tập thể dục
Tạo mật độ sau trên import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 8 của bộ dữ liệu import matplotlib.pyplot as plt %matplotlib inline plt.rcParams.update({'figure.figsize':(7,5), 'figure.dpi':100}) # Plot Histogram on x x = np.random.normal(size = 1000) plt.hist(x, bins=50) plt.gca().set(title='Frequency Histogram', ylabel='Frequency'); 9 trên sổ ghi chép Jupyter của bạn.
10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 1Hiển thị giải pháp
10.0 * * * * * * * * * 20.0 * * * * * * * * * * * * * 30.0 * * * * * * * * * 40.0 * * * * * * * * * * * * * * * 50.0 * * * * * * * * * 60.0 * * * * * * * * * 70.0 * * * * * * * * * * * * * * * * 80.0 * * * * * 90.0 * * * * * * * * * 100.0 * * * * * * 2
9. Điều gì tiếp theo
Xin chúc mừng nếu bạn có thể tái tạo cốt truyện.
Bạn có thể quan tâm đến hướng dẫn Matplotlib, 50 lô hàng đầu matplotlib và các hướng dẫn âm mưu khác.
Bài viết liên quan
- Subplotlib Subplots
- Top 50 trực quan hóa matplotlib
- Hướng dẫn Matplotlib
- Matplotlib pyplot
- Biểu đồ matplotlib
- Biểu đồ thanh trong Python
- Biểu đồ hộp trong Python