على مدار العام الماضي ، واجهتني الحاجة إلى رسم الرسوم البيانية وشريط الرسوم البيانية في كثير من الأحيان بما يكفي لجعلني أرغب في الكتابة. بالإضافة إلى ذلك ، كنت أنا شخصياً تفتقر إلى مثل هذه المعلومات. تقدم هذه المقالة نظرة عامة على 3 طرق لإنشاء مثل هذه الرسوم البيانية في بيثون.
بادئ ذي بدء ، لم أكن أعرف نفسي لفترة طويلة من خبرتي القاسية: المخططات البيانية والرسم البياني هي شيئان مختلفان. الفرق الرئيسي هو أن الرسم البياني يوضح توزيع التردد - نحدد مجموعة من القيم لمحور الثور ، ويتم رسم التردد دائمًا على Oy. في المخطط الشريطي (الذي سيكون من المناسب استدعاء barplot في الأدب الإنجليزي) ، نحدد كلاً من محور الإحداثي والمحور الإحداثي.
للمظاهرة ، سأستخدم scikit للضرب تعلم مجموعة بيانات مكتبة Iris. لنبدأ بالواردات:
import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn import datasets iris = datasets.load_iris()
سنقوم بتحويل مجموعة بيانات القزحية إلى إطار بيانات - لذلك سيكون من الأنسب لنا العمل معها في المستقبل.
data = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target'])
من بين المعلمات التي نهتم بها ، تحتوي البيانات على معلومات حول طول الكأس الصفراء وبتلات وعرض الكأس والبتلة.
باستخدام Matplotlibالرسم البيانيلنقم بإنشاء رسم بياني منتظم يوضح توزيع تردد أطوال بتلات وسبال:
fig, axs = plt.subplots(1, 2) n_bins = len(data) axs[0].hist(data['sepal length (cm)'], bins=n_bins) axs[0].set_title('sepal length') axs[1].hist(data['petal length (cm)'], bins=n_bins) axs[1].set_title('petal length')
بناء شريط الرسم البيانينحن نستخدم طرق matplotlib لمقارنة عرض الأوراق والأوراق الصفراء. هذا يبدو أكثر ملاءمة للقيام به على مخطط واحد:
x = np.arange(len(data[:50])) width = 0.35
على سبيل المثال ، ومن أجل تبسيط الصورة ، خذ أول خمسين سطرًا من ملف البيانات.
fig, ax = plt.subplots(figsize=(40,5)) rects1 = ax.bar(x - width/2, data['sepal width (cm)'][:50], width, label='sepal width') rects2 = ax.bar(x + width/2, data['petal width (cm)'][:50], width, label='petal width') ax.set_ylabel('cm') ax.set_xticks(x) ax.legend()
باستخدام الطرق البحريةفي رأيي ، فإن العديد من المهام لبناء الرسوم البيانية هي أسهل وأكثر كفاءة في الأداء باستخدام الأساليب المنقولة بحرا
(بالإضافة إلى ذلك ، يفوز بحرا أيضا مع قدراته الرسومية ، في رأيي) .
سأقدم مثالاً على المهام التي تم حلها في البحر مع سطر واحد من التعليمات البرمجية. ولا سيما بحرا هو الرابح عندما تحتاج إلى بناء التوزيع. دعنا نقول أننا بحاجة إلى بناء توزيع طول sepal. الحل لهذه المشكلة كالتالي:
sns_plot = sns.distplot(data['sepal width (cm)']) fig = sns_plot.get_figure()

إذا كنت تحتاج فقط إلى جدول توزيع ، فيمكنك القيام بذلك مثل هذا:
snsplot = sns.kdeplot(data['sepal width (cm)'], shade=True) fig = snsplot.get_figure()

اقرأ المزيد عن توزيعات المباني في البحر
هنا.الرسوم البيانية بار بانداسكل شيء بسيط هنا. في الواقع ، هذه هي قذيفة matplotlib.pyplot.hist () ، ولكن استدعاء دالة من خلال pd.hist () يكون أحيانًا أكثر ملاءمة من الإنشاءات الأقل مرونة لـ matplotlib-a.
يمكنك قراءة المزيد في وثائق مكتبة الباندا.يعمل مثل هذا:
h = data['petal width (cm)'].hist() fig = h.get_figure()

شكرا لك على القراءة حتى النهاية! سوف أكون سعيدًا بالتعليقات والتعليقات!