如何在matplotlib中按递增顺序排序条形图中的条形?
Matplotlib是广泛使用的图形绘制库之一,它提供了许多绘图选项,包括直方图、散点图、曲线图和条形图等。在绘制条形图时,我们可能需要按照条形的值大小将它们按递增顺序排列,以便更好地进行比较和分析。本文将介绍如何在Matplotlib中按递增顺序排序条形图中的条形。
创建一个简单的条形图
我们首先来创建一个简单的条形图。假设我们有一个Python列表,其中包含几个城市的人口数量。
import matplotlib.pyplot as plt
cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Philadelphia']
population = [8623000, 3995000, 2719000, 2313000, 1568000]
plt.bar(cities, population)
plt.show()
运行该代码后,我们将得到一个如下所示的条形图,其中每个条形表示一个城市,其高度表示该城市的人口数量。
根据值排序条形图
要按递增顺序排序条形图,我们需要对城市和人口数量进行排序。我们可以使用Python中的zip函数将这两个列表组合成元组的列表,并在按照元组中第二个元素(人口数量)排序后,重新分离它们。
cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Philadelphia']
population = [8623000, 3995000, 2719000, 2313000, 1568000]
city_population = list(zip(cities, population))
city_population.sort(key=lambda x: x[1]) # 按照元组中第二个元素(人口数量)排序
cities, population = zip(*city_population) # 重新分离它们
plt.bar(cities, population)
plt.show()
运行该代码片段后,我们将得到一个按照人口数量排序的条形图。
倒序排序条形图
如果我们想按逆序显示条形图,我们可以将排序后的列表反转一下。
cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Philadelphia']
population = [8623000, 3995000, 2719000, 2313000, 1568000]
city_population = list(zip(cities, population))
city_population.sort(key=lambda x: x[1], reverse=True) # 按照元组中第二个元素(人口数量)倒序排序
cities, population = zip(*city_population) # 重新分离它们
plt.bar(cities, population)
plt.show()
运行该代码片段后,我们将得到一个按逆序排列的条形图。
添加图表标题和标签
为了让我们的图表更加准确和易读,我们可以添加图表标题和标签。
cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Philadelphia']
population = [8623000, 3995000, 2719000, 2313000, 1568000]
city_population = list(zip(cities, population))
city_population.sort(key=lambda x: x[1], reverse=True) # 按照元组中第二个元素(人口数量)倒序排序
cities, population = zip(*city_population) # 重新分离它们
plt.bar(cities, population)
plt.title('Population of U.S. Cities')
plt.xlabel('City')
plt.ylabel('Population (in millions)')
plt.show()
运行该代码片段后,我们将得到一个添加了标题和标签的条形图。
结论
在Matplotlib中按递增顺序排序条形图只需要以下简单的步骤:
- 对将要绘制的数据进行排序,可以使用zip函数将数据组合成元组的列表,然后根据需要选择递增或逆序排序。
-
在按照排序后的顺序绘制条形图时,要确保城市名称和人口数量分别与排序后的列表一一对应。
-
可以添加图表标题和标签,使图表更加准确和易读。
使用Matplotlib绘制精美的条形图非常简单,只需要这些简单的步骤即可。