python如何使用plt画出漂亮的柱状图(条形图)

如何使用plt画出漂亮的柱状图(条形图)

  • 1.配置环境
  • 2.效果图
  • 3.绘图代码
  • 4.代码解释
  • 5.结束语
  • 1.配置环境

    使用环境:python3.7
    平台:Windows10
    工具:matplotlib
    IDE:PyCharm

    2.效果图

    优化后的图片:

    优化前的图片:

    3.绘图代码

    # author:Hurricane
    # date:  2021/11/12
    # E-mail:hurri_cane@qq.com
    
    
    from matplotlib import pyplot as plt
    import random
    
    
    def plot_bar_color(data, x, path="color.png"):
    	# data:条形图数据
    	# x:x轴坐标
    	# path:图片保存路径
    
    	# 创建颜色序列
    	colors = []
    	for _ in range(int(len(data) / 2)):
    		colors.append([_ / int(len(data) / 2), 0.5, 0.5])
    	colors = colors + colors[::-1]
    
    	# 创建x轴显示的参数(此功能在与在图像中x轴仅显示能被10整除的刻度,避免刻度过多分不清楚)
    	x_tick = list(map(lambda num: "" if num % 10 != 0 else num, x))
    
    	# 创建一个分辨率为3000*1000的空白画布
    	plt.figure(figsize=(300, 100), dpi=10)
    
    	# 创建一个字体样式
    	font2 = {'family': 'Times New Roman',
    			 'weight': 'normal',
    			 'size': 300, }
    
    	# 设置x轴的说明
    	plt.xlabel('Classes', font2)
    	# 设置y轴的说明
    	plt.ylabel('Number of data', font2)
    	# 打开网格线
    	plt.grid()
    	# 绘制条形图
    	plt.bar(range(len(data)), data, color=colors, width=0.5)
    	# 显示x轴刻度
    	plt.xticks(range(len(x_tick)), x_tick, size=200)
    	# 显示y轴刻度
    	plt.yticks(size=200)
    	# 获取当前图像句柄
    	fig = plt.gcf()
    	# plt.show()
    	# 存储当前图像
    	fig.savefig(path)
    
    
    def plot_bar_normal(data, x, path="normal.png"):
    	# data:条形图数据
    	# x:x轴坐标
    	# path:图片保存路径
    
    	# 创建x轴显示的参数(此功能在与在图像中x轴仅显示能被10整除的刻度,避免刻度过多分不清楚)
    	x_tick = list(map(lambda num: "" if num % 10 != 0 else num, x))
    
    	# 创建一个分辨率为3000*1000的空白画布
    	plt.figure(figsize=(300, 100), dpi=10)
    
    	# 设置x轴的说明
    	plt.xlabel('Classes', size=300)
    	# 设置y轴的说明
    	plt.ylabel('Number of data', size=300)
    	# 打开网格线
    	plt.grid()
    	# 绘制条形图
    	plt.bar(range(len(data)), data,  width=0.5)
    	# 显示x轴刻度
    	plt.xticks(range(len(x_tick)), x_tick, size=200)
    	# 显示y轴刻度
    	plt.yticks(size=200)
    	# 获取当前图像句柄
    	fig = plt.gcf()
    	# plt.show()
    	# 存储当前图像
    	fig.savefig(path)
    
    
    if __name__ == '__main__':
    	# 创建需要绘制的数据,本实例中为72个0到100的随机数
    	data = [random.randint(0, 100) for _ in range(72)]
    	# 创建x轴坐标
    	x = list(range(0, 360, 5))
    	# save_path = r"test.png"
    	# 绘制彩色条形图并保存
    	plot_bar_color(data, x)
    	# 绘制普通条形图并保存
    	plot_bar_normal(data, x)
    	print("All Done!")
    
    
    
    

    4.代码解释

    在第三节给出的代码已经有了详细的注释,本节主要对关键部分进行讲解。
    Python绘制柱状图相信大家并不陌生,采用plt.bar命令可很快完成。如果对该命令不了解的同学可以先参考一下此文章
    https://blog.csdn.net/HangoverLG/article/details/106063835?
    但是可以看到plt.bar绘制出来 的默认条形图颜色单一,本文的主要功能就是给条形图着色
    在本文中可以看到,相较于未着色的图,就是在于这行代码,在绘制bar时,添加了颜色序列

    	plt.bar(range(len(data)), data, color=colors, width=0.5)
    

    那么颜色序列怎么创建呢?

    	for _ in range(int(len(data) / 2)):
    		colors.append([_ / int(len(data) / 2), 0.5, 0.5])
    	colors = colors + colors[::-1]
    

    通过上述代码可以轻松实现。本文为了达到颜色从中间分开对称的效果,所以采用创建一遍序列后,再将其反序和原始序列拼接。
    如果你只想要产生单向渐变颜色的条形图的话,那么只需要这一行命令即可

    colors = [[random.random() for _ in range(3)] for _ in range(len(data))]
    

    5.结束语

    如果本文对你有帮助的话还请点赞、收藏一键带走哦,你的支持是我最大的动力!(づ。◕ᴗᴗ◕。)づ

    来源:Hurri_cane

    物联沃分享整理
    物联沃-IOTWORD物联网 » python如何使用plt画出漂亮的柱状图(条形图)

    发表评论