用 Python 绘制数据的7种最流行的方法


用 Python 绘制数据的7种最流行的方法

文章插图
 
比较七个在 Python 中绘图的库和 API , 看看哪个最能满足你的需求 。
  • 来源:https://linux.cn/article-12327-1.html
  • 作者:Shaun Taylor-morgan
  • 译者:Xingyu.Wang
(本文字数:8312 , 阅读时长大约:9 分钟)
比较七个在 Python 中绘图的库和 API , 看看哪个最能满足你的需求 。
“如何在 Python 中绘图?”曾经这个问题有一个简单的答案:Matplotlib 是唯一的办法 。如今 , Python 作为数据科学的语言 , 有着更多的选择 。你应该用什么呢?
本指南将帮助你决定 。
它将向你展示如何使用四个最流行的 Python 绘图库:Matplotlib、Seaborn、Plotly 和 Bokeh , 再加上两个值得考虑的优秀的后起之秀:Altair , 拥有丰富的 API;Pygal , 拥有漂亮的 SVG 输出 。我还会看看 Pandas 提供的非常方便的绘图 API 。
对于每一个库 , 我都包含了源代码片段 , 以及一个使用 Anvil 的完整的基于 Web 的例子 。Anvil 是我们的平台 , 除了 Python 之外 , 什么都不用做就可以构建网络应用 。让我们一起来看看 。
示例绘图每个库都采取了稍微不同的方法来绘制数据 。为了比较它们 , 我将用每个库绘制同样的图 , 并给你展示源代码 。对于示例数据 , 我选择了这张 1966 年以来英国大选结果的分组柱状图 。
用 Python 绘制数据的7种最流行的方法

文章插图
 
Bar chart of British election data
我从维基百科上整理了 英国选举史的数据集 :从 1966 年到 2019 年 , 保守党、工党和自由党(广义)在每次选举中赢得的英国议会席位数 , 加上“其他”赢得的席位数 。你可以 以 CSV 文件格式下载它。
MatplotlibMatplotlib 是最古老的 Python 绘图库 , 现在仍然是最流行的 。它创建于 2003 年 , 是 SciPy Stack 的一部分 , SciPy Stack 是一个类似于 Matlab 的开源科学计算库 。
Matplotlib 为你提供了对绘制的精确控制 。例如 , 你可以在你的条形图中定义每个条形图的单独的 X 位置 。下面是绘制这个图表的代码(你可以在 这里 运行):
    import matplotlib.pyplot as plt    import numpy as np    from votes import wide as df    # Initialise a figure. subplots() with no args gives one plot.    fig, ax = plt.subplots()    # A little data preparation    years = df['year']    x = np.arange(len(years))    # Plot each bar plot. Note: manually calculating the 'dodges' of the bars    ax.bar(x - 3*width/2, df['conservative'], width, label='Conservative', color='#0343df')    ax.bar(x - width/2, df['labour'], width, label='Labour', color='#e50000')    ax.bar(x + width/2, df['liberal'], width, label='Liberal', color='#ffff14')    ax.bar(x + 3*width/2, df['others'], width, label='Others', color='#929591')    # Customise some display properties    ax.set_ylabel('Seats')    ax.set_title('UK election results')    ax.set_xticks(x)    # This ensures we have one tick per year, otherwise we get fewer    ax.set_xticklabels(years.astype(str).values, rotation='vertical')    ax.legend()    # Ask Matplotlib to show the plot    plt.show()这是用 Matplotlib 绘制的选举结果:
用 Python 绘制数据的7种最流行的方法

文章插图
 
Matplotlib plot of British election data
SeabornSeaborn 是 Matplotlib 之上的一个抽象层;它提供了一个非常整洁的界面 , 让你可以非常容易地制作出各种类型的有用绘图 。
不过 , 它并没有在能力上有所妥协!Seaborn 提供了访问底层 Matplotlib 对象的 逃生舱口  , 所以你仍然可以进行完全控制 。
Seaborn 的代码比原始的 Matplotlib 更简单(可在 此处 运行):
    import seaborn as sns    from votes import long as df    # Some boilerplate to initialise things    sns.set()    plt.figure()    # This is where the actual plot gets made    ax = sns.barplot(data=https://www.isolves.com/it/cxkf/yy/Python/2020-07-09/df, x="year", y="seats", hue="party", palette=['blue', 'red', 'yellow', 'grey'], saturation=0.6) # Customise some display properties ax.set_title('UK election results') ax.grid(color='#cccccc') ax.set_ylabel('Seats') ax.set_xlabel(None) ax.set_xticklabels(df["year"].unique().astype(str), rotation='vertical') # Ask Matplotlib to show it plt.show()


推荐阅读