Python Matplotlib数据可视化绘图之(四) 您所在的位置:网站首页 excel散点图和折线图叠加 Python Matplotlib数据可视化绘图之(四)

Python Matplotlib数据可视化绘图之(四)

2023-10-28 03:13| 来源: 网络整理| 查看: 265

文章目录 前言一、所用到的模块二、柱状图与折线图的叠加图的绘制1.示例数据如下2.代码如下2.1 代码如下(示例):2.1.1 Case1: 2.2 我们可以看到,在上述作图过程中,我们把画布(fig)背景色设置为#B0C4DE,把轴域(ax)背景色或者称为绘图区域背景色设置为white(纯白色),以上图片都是我截图保存下来的,所以能够保持我们对fig和ax的背景色的设置,但是如果我们想用plt.savefig()语句把图片保存到本地,且仍然保留我们对fig和ax的背景色的设置的话,需要使用以下语句参数,如下所示: 三、总结

前言

本文我们主要介绍利用Python中的Matplotlib模块进行柱状图与折线图的叠加图的画法。

一、所用到的模块

主要利用Python中的Matplotlib模块完成该功能。

二、柱状图与折线图的叠加图的绘制 1.示例数据如下

2020年、2021和2022年每种语言的用户量情况,数据如下表所示(示例):

语言种类2020年用户量人数2021年用户量人数2022年用户量人数C200030005000C++300040006000Python3000600010000Java500040006000Java Script200040003000PHP100020002000Ruby80010001000

现在需要把表格中的数据绘制成柱状图和折线图的叠加图,从而进一步分析各类语言的用户的使用情况。

2.代码如下 2.1 代码如下(示例): 2.1.1 Case1: 代码如下: import matplotlib import matplotlib.pyplot as plt import numpy as np # 设置字体, 解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 解决图像中的'-'负号的乱码问题 plt.rcParams['axes.unicode_minus'] = False x_labels = ['C', 'C++', 'Python', 'Java', 'Java Script', 'PHP', 'Ruby'] y_2020 = [2000, 3000, 3000, 5000, 2000, 1000, 800] y_2021 = [3000, 4000, 6000, 4000, 4000, 2000, 1000] y_2022 = [5000, 6000, 10000, 6000, 3000, 2000, 1000] y_middle = [] for i in range(len(y_2020)): y_middle.append((y_2020[i] + y_2021[i] + y_2022[i]) / 3) legend_labels = ['2020', '2021', '2022'] y = [y_2020, y_2021, y_2022] fig = plt.figure(figsize=(8, 6), facecolor='#B0C4DE') ax = fig.add_subplot(facecolor='white') # 红橙黄绿青蓝紫 color_list = ['#FF0000', '#FF8C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#800080'] x_loc = np.arange(7) # x轴上每个刻度上能容纳的柱子的总的宽度设为0.8 total_width = 0.8 # 由y值可以看出x轴每个刻度上一共有3组数据, 也即3个柱子 total_num = 3 # 每个柱子的宽度用each_width表示 each_width = total_width / total_num if total_num % 2 == 0: x1 = x_loc - (total_num / 2 - 1) * each_width - each_width / 2 else: x1 = x_loc - ((total_num - 1) / 2) * each_width x_list = [x1 + each_width * i for i in range(total_num)] print(x_list) # 这里颜色设置成 橙色:"#FF8C00" for i in range(0, len(y)): ax.bar(x_list[i], y[i], color=color_list[i], width=each_width, label=legend_labels[i]) ax.set_xticks(x_loc) ax.set_xticklabels(x_labels) ax.grid(True, ls=':', color='b', alpha=0.3) ax.set_xlabel('编程语言类别', fontweight='bold') ax.set_ylabel('编程语言用户量(人数)', fontweight='bold') plt.title('编程语言用户量数据分析图', fontweight='bold', pad=25) # 添加双轴 ax_twinx = ax.twinx() ax_twinx.plot(x_loc, y_middle, linestyle='-', marker='o', markersize=3, color=color_list[1], label='Middle') fig.legend(loc='upper center', bbox_to_anchor=(0.5, 0.96), frameon=False, ncol=5, handlelength=0.9, handleheight=0.9, fontsize='small') ax_twinx.set_ylabel('Middle', fontweight='bold') fig.tight_layout() fig.subplots_adjust(top=0.9) plt.show() 输出结果如下:

在这里插入图片描述

2.2 我们可以看到,在上述作图过程中,我们把画布(fig)背景色设置为#B0C4DE,把轴域(ax)背景色或者称为绘图区域背景色设置为white(纯白色),以上图片都是我截图保存下来的,所以能够保持我们对fig和ax的背景色的设置,但是如果我们想用plt.savefig()语句把图片保存到本地,且仍然保留我们对fig和ax的背景色的设置的话,需要使用以下语句参数,如下所示: plt.savefig(picturename + '.jpg', facecolor=self.fig.get_facecolor()) # facecolor=self.fig.get_facecolor()就是需要我们添加的参数, 这样我们就能把图片的fig和ax区域设定的背景色保存到本地了。 三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了Python中Matplotlib模块对于绘制柱状图和折线图的叠加图时需要注意的方面,希望对广大初学者网友有帮助。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有