- 1.配置环境
- 2.效果图
- 3.绘图代码
- 4.代码解释
- 5.结束语
使用环境:python3.7
平台:Windows10
工具:matplotlib
IDE:PyCharm
优化后的图片:
优化前的图片:
# 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.结束语
如果本文对你有帮助的话还请点赞、收藏一键带走哦,你的支持是我最大的动力!(づ。◕ᴗᴗ◕。)づ
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)