有没有想过如何使用 Python 来创建令人惊叹的数据可视化?

本系列的第一部分 ,我们了解了 如何 使用 matplotlib 库绘制线图和直方图。我们还了解了如何更改图的默认大小以及 如何 , 向图 图例

在本文中,我们将看到可以使用 matplot 库绘制的更多类型的图表,以及 如何改进它们的 专业提示

  • 条形图
  • 散点图
  • 堆叠图
  • 饼图

在代码中 plt 使用 matplotlib 模块的别名 plt .

让我们开始吧!

条形图

条形图只是 使用条形来表示特定 x 值的 y 值 。例如,您可以使用条形图来描绘过去十年的股票价格。为此,您可以使用 bar 函数 。此函数的第一个参数是 x 轴的值列表,第二个参数是 y 轴的对应值列表。值得一提的是, x 和 y 列表中的点数必须相等 .

考虑以下脚本:

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.bar(years, stock_prices)
plt.show()

输出如下所示:

bar 函数的参数 color 传递一个值来更改条形的颜色 ,如下所示:

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.bar(years, stock_prices, color = "deepskyblue", edgecolor = "rebeccapurple")
plt.show()

在上面的脚本中,color 属性的值设置为 deepskyblue 。上述脚本的输出如下所示:

专业提示:如何创建水平条形图

除了垂直条形图, 您还可以绘制水平条形图 。为此,您只需将 Horizo​​ntal 作为 bar 函数的 orientation 参数的值传入即可。请看以下脚本:

stock_prices = [23,21,43,32,45,34,56,23,67,89]
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] 

plt.barh(years, stock_prices, orientation = "horizontal", color = "deepskyblue", edgecolor = "rebeccapurple")
plt.show()

在输出中,您将看到一个水平条形图,如下所示:

散点图

散点图与线图类似,但它们不使用曲线来显示 x 轴和 y 轴值之间的关系。相反, 您只需绘制每对 x 和 y 值 。要创建散点图,您只需使用 scatter 函数。x 轴和 y 轴的值分别作为此函数的第一个和第二个参数传入。

看一下下面的脚本:

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices)
plt.show()

上面脚本的输出如下所示:

默认情况下,散点图使用蓝色圆圈,但您可以更改形状和颜色。要绘制的形状由 marker 参数指定。同样,绘图颜色也传递给该 color 参数。请看以下脚本:

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices, marker = "x", color = "#5d3087")
plt.show()

这里,' x ' 作为标记传入,而十六进制代码 #5d3087 作为颜色传入。或者,您可以传入颜色的名称而不是其十六进制值。上述脚本的输出如下所示:

专业提示:如何更改散点图的标记大小

通过传入 s 参数的值来 by passing in a value for the s parameter 。默认值为 20。请看以下脚本:

stock_prices = [23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89,23,21,43,32,45,34,56,23,67,89]
credit_ratings = [2,3,5,2,5,3,5,2,6,8,2,3,5,2,5,3,5,2,6,8,2,3,5, 2,5,3,5,2,6,8] 

plt.scatter(credit_ratings, stock_prices, marker = "o", color = "deepskyblue", edgecolors = "rebeccapurple", s = 400)
plt.show()

输出如下所示:

当然,您可能已经注意到,这些标记非常大,因此很难分辨它们在 x 轴和 y 轴上对应的值。这更像是一个说明性练习。在制作自己的散点图时,请务必选择合理的标记大小,以平衡可见性和清晰度。

堆叠图

x 轴的每个数据点都有来自多个类别的数据 。例如,您可以使用堆叠图绘制过去八年三家公司的股价。这些公司的数据将堆叠 在一起, 以便于比较。

要绘制堆栈图,您需要使用 stackplot function of the plt module 。第一个参数是要在 x 轴上绘制的数据列表,其余参数是您想要在堆栈图中显示的每个类别的数据。您还可以使用属性为每个堆栈指定颜色 color

year = [2014, 2015, 2016, 2017, 2018]

company1 = [78,57,68,97,51]  
company2 = [85,65,74,105,62]  
company3 = [65,42,56,90,45]

plt.plot([],[], color = "#93c149", label = "company1")  
plt.plot([],[], color = "#25b6ea", label = "company2")  
plt.plot([],[], color = "#5d3087", label = "company3")

plt.stackplot(year,company1,company2,company3,colors = ["#25b6ea","#93c149","#5d3087"])  

plt.legend()  
plt.title("Average Stock Prices for the three companies")  
plt.xlabel("year")  
plt.ylabel("Stock Prices")  
plt.show()

上面脚本的输出如下所示:

专业提示:如何创建对称堆叠图

您还可以通过传入 'sym' 基线参数的值来 ,如下所示:

year = [2014, 2015, 2016, 2017, 2018]

company1 = [78,57,68,97,51]  
company2 = [85,65,74,105,62]  
company3 = [65,42,56,90,45]

plt.plot([],[], color = "#93c149", label = "company1")  
plt.plot([],[], color = "#25b6ea", label = "company2")  
plt.plot([],[], color = "#5d3087", label = "company3")

plt.stackplot(year, company1, company2, company3, colors = ["#25b6ea","#93c149","#5d3087"] , baseline = "sym")  

 
plt.legend()  
plt.title("Average Stock Prices for the three companies")  
plt.xlabel("year")  
plt.ylabel("Stock Prices")  
plt.show()

在输出中,您将看到一个对称堆栈图:

饼图

饼图呈圆形,其中每个切片代表属于特定类别的数据部分。要绘制饼图,您需要调用 the pie function of the plt module 。第一个参数是数据列表。然后,您需要将类别名称列表传递给参数 labels 。如果 shadow 将参数设置为 True ,则图表边缘附近会出现一条细阴影。最后, explode 可以使用该参数在饼图的不同切片之间添加空间。

值得一提的是,您不必指定每个类别在图表中所占的确切百分比。相反,您只需指定每个类别的值;饼图会自动将这些值转换为百分比。以下脚本为一个国家一年的假想预算支出创建了一个饼图:

sectors = "Health", "Defence", "Education', "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors = colors ,shadow = True, explode = (0.025, 0.025, 0.025, 0.025), autopct = "%1.1f%%")  
plt.axis("equal")

plt.show()

脚本的输出如下所示:

让我们增加 explode 第一个类别的值,看看会得到什么结果。我们将其设置为 0.5:

sectors = "Health", "Defence", "Education", "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors=colors ,shadow = True, explode = (0.5, 0.025, 0.025, 0.025), autopct = "%1.1f%%")  
plt.axis("equal")

plt.show()  

在输出中,您会看到“健康”与其他类别之间的距离增加了,如下所示:

专业提示:根据基线改变角度

默认情况下,饼图的切片排列方式是,占饼图最大份额的类别将出现在左上角,其他类别则出现在随机位置。但是,您可以更改此行为。

例如,如果您希望 第一个类别相对于基线 (一条穿过饼图中心的假想水平线)成 90 度角,则可以将 90 作为 startangle 饼图函数参数的值传入,如下所示:

sectors = "Health", "Defence", "Education", "Tourism"

amount = [40,75,35,15]  
colors = ["#93c149","#25b6ea","#5d3087","#d15197"]

plt.pie(amount, labels = sectors, colors = colors ,shadow = True, explode = (0.025, 0.025, 0.025, 0.025), autopct = "%1.1f%%", startangle = 90)  
plt.axis('equal')

plt.show()  

在输出中,您将看到名为“健康”的类别现在相对于基线成 90 度角:

结论

就这样结束了!

在本文中,您学习了如何绘制条形图、堆叠图、散点图和饼图。对于任何有兴趣学习如何绘制和可视化数据的人来说,matplotlib 库都是必备的。

想要了解更多有关使用 matplotlib 进行数据可视化的信息?请务必查看我们的“ 数据科学 Python 简介” 课程。对于想要了解更多有关 Python 数据科学和数据可视化的初学者和中级 Python 用户来说,这都是一个极好的资源。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部