下面将详细介绍如何使用Python绘制柱状图,并实现不同颜色和显示数值的效果。
概述
Python是一种开源编程语言,拥有非常丰富的数据可视化库。Matplotlib是其中一款绘图库,可以从多个角度展示数据,包括柱状图、饼图、折线图,等等。柱状图是一种复合图表,适合用于展示比较类别之间的数量。
实现步骤
下面将介绍如何使用Python绘制柱状图并添加不同颜色和数值的方法,主要分为以下几个步骤:
1. 导入必要的库
2. 准备数据
3. 绘制柱状图
4. 设置颜色和数值
5. 显示图形
导入必要的库
我们使用Matplotlib库来绘制柱状图,因此需在代码中导入该库,同时为了使绘图更加美观,还需导入Seaborn库。
import matplotlib.pyplot as plt
import seaborn as sns
准备数据
绘制柱状图需要提供数据,通常使用列表或pandas DataFrame。下面我们使用一个列表来存储数据:
values = [10, 20, 30, 40, 50]
labels = ['A', 'B', 'C', 'D', 'E']
其中values是柱状图的高度,labels则是x轴的刻度标签。
绘制柱状图
我们使用Matplotlib库中的plt.bar()
函数来绘制柱状图。该函数需要提供x轴和y轴的数据,可以直接使用上面准备好的数据:
plt.bar(labels, values)
设置颜色和数值
默认情况下,Matplotlib库绘制的柱状图颜色都是相同的,且没有显示具体数值。因此,我们需要根据需求设置颜色和数值。针对颜色,我们可以添加color
参数,它的值可以是一个颜色或一个颜色列表,其长度必须与数据长度一样。针对数值,则使用for循环遍历数据列表,并添加plt.text()
来绘制在柱状图上。
# 根据值设置颜色
colors = ['red' if v < 30 else 'green' for v in values]
# 绘制柱状图
plt.bar(labels, values, color=colors)
# 绘制数值
for i, v in enumerate(values):
plt.text(x=i, y=v+1, s=str(v))
在这个例子中,我们根据每个值是否小于30,来设置不同的颜色。同时我们遍历列表并在每个柱状图上显示数值。
完整代码示例
下面是一个完整的Python程序,演示如何绘制柱状图并添加颜色和数值:
import matplotlib.pyplot as plt
import seaborn as sns
# 准备数据
values = [10, 20, 30, 40, 50]
labels = ['A', 'B', 'C', 'D', 'E']
# 绘制柱状图
plt.bar(labels, values)
# 根据值设置颜色
colors = ['red' if v < 30 else 'green' for v in values]
# 绘制柱状图
plt.bar(labels, values, color=colors)
# 绘制数值
for i, v in enumerate(values):
plt.text(x=i, y=v+1, s=str(v))
# 设置x轴,y轴标签
plt.xlabel('Category')
plt.ylabel('Value')
# 设置图形标题
plt.title('Bar plot')
# 显示图形
plt.show()
示例
接下来,我们使用一个实际数据进行练习,该数据为一个北美的城市房价数据集,数据集包含了2014年1月至2015年1月之间,在Zillow网站上由Zillow估价师发布的单户房屋房价估值列表。
我们画出该数据集中不同城市的房价情况,具体绘图代码如下:
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('City_Zhvi_AllHomes.csv')
# 计算平均值
mean_price = data.groupby(['City']).mean()
# 取前10个城市
mean_price = mean_price['2014-12'].sort_values(ascending=False)[:10]
# 取得城市名称和房价列表
labels = mean_price.index.tolist()
prices = mean_price.tolist()
# 绘制柱状图
plt.bar(labels, prices)
# 设置颜色
colors = ['red' if p < 300000 else 'green' for p in prices]
# 绘制柱状图
plt.bar(labels, prices, color=colors)
# 绘制数值
for i, v in enumerate(prices):
plt.text(x=i, y=v+1000, s=str(int(v/1000))+'K')
# 设置x轴,y轴标签
plt.xlabel('City')
plt.ylabel('Price')
# 设置图形标题
plt.title('House Price in Top 10 Cities')
# 显示图形
plt.show()
我们可以得到一个用于展示城市房价的柱状图,其中红色表示房价高于30万美元,绿色为低于30万美元的房价。
虽然我们的数据并不是问题塞让我们使用条形图或条形图的最佳选择,但为了练习目的而采用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python画柱状图–不同颜色并显示数值的方法 - Python技术站