第一章 使用 matplotlib 绘制折线图
第二章 使用 matplotlib 绘制条形图
第三章 使用 matplotlib 绘制直方图
第四章 使用 matplotlib 绘制散点图
第五章 使用 matplotlib 绘制饼图
第六章 使用 matplotlib 绘制热力图
第七章 使用 matplotlib 绘制堆叠条形图
第八章 使用 matplotlib 在一个画布内绘制多个图
俗话说,一图胜千言。数据可视化便是将数据通过图形化的方式展现出来,它更加便于我们观察数据蕴含的的规律,洞察了数据蕴含的规律后,我们能够做更好的商业决策。
折线图是一个由点和线组成的统计图表,常用来表示数值随连续时间间隔或有序类别的变化。在折线图中,x 轴通常用作连续时间间隔或有序类别(比如阶段1,阶段2,阶段3)。y 轴用于量化的数据,如果为负值则绘制于 y 轴下方。连线用于连接两个相邻的数据点。
折线图用于分析事物随时间或有序类别而变化的趋势。如果有多组数据,则用于分析多组数据随时间变化或有序类别的相互作用和影响。折线的方向表示正/负变化。折线的斜率表示变化的程度。
本节课我们来看如何作折线图。首先我们需要安装 matplotlib 库,可以使用命令 pip install matplotlib
进行安装。matplotlib 库安装完成后,我们便可以使用 matplotlib 库来作图了。例如:
from matplotlib import pyplot as plt
dev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(dev_x, dev_y)
plt.show()
上述代码的第一行从 matplotlib 导入 pyplot 并起别名 plt。dev_x、dev_y
为两个列表,分别包含 11 个数据,接下来调用 plot 函数便可以进行作图,plot 函数的参数为两组数据,调用 plot 函数之后,还需要调用 show 函数,否则不会显示图形。上述代码得到的图形如下所示:
上述图形中没有标识横坐标、纵坐标所表示的含义以及整个图形的标题。下面我们来添加上述信息:
from matplotlib import pyplot as plt
dev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(dev_x, dev_y)
plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")
plt.show()
上述代码通过 xlabel 函数添加横坐标代表的含义,通过 ylabel 函数添加纵坐标代表的含义,通过 title 函数添加图形的标题。添加上述信息之后的图形如下图所示:
from matplotlib import pyplot as plt
dev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(dev_x, dev_y)
py_dev_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(py_dev_x, py_dev_y)
plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")
plt.show()
绘制的图形如下:
dev_x
和 py_dev_x
是相同的,为了代码的简洁,我们可以只保留一份,例如:
from matplotlib import pyplot as plt
ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y)
py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y)
plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")
plt.show()
执行完上述代码生成的图形如下图所示:
from matplotlib import pyplot as plt
ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752]
plt.plot(ages_x, dev_y)
py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640]
plt.plot(ages_x, py_dev_y)
plt.xlabel("年龄")
plt.ylabel("年薪")
plt.title("年龄和薪水的关系")
plt.legend(['全部开发者','Python开发者'])
plt.show()
绘制的图形如下:
from matplotlib import pyplot as plt ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.show()
上面的方法通过在 plot 函数中添加参数 label 来实现标签的添加,添加过参数 label 后,我们同样需要调用 legend 函数,否则标签不会显示出来,只不过此时调用 legend 函数不需要传入参数。为折线添加完标签之后的图形如下图所示:
上面图形的样式都是默认的,我们也可以通过参数来设置图形的样式,包括折线的颜色、形状以及粗细等等。例如:
from matplotlib import pyplot as plt ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者", color="blue", marker=".", linestyle="-") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者", color="green", marker=".", linestyle="--") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.show()
上面的代码中,我们通过 color 参数指定图形的颜色,marker 参数指定每个数据点的标记,linestyle 参数指定图形的形状。执行完上述代码后的图形如下图所示:
from matplotlib import pyplot as plt ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.show()
上面的代码中,通过 Hex 值 #FF0000
指定颜色为红色,通过 Hex 值 #00FF00
指定颜色为绿色。执行完上述代码后的图形如下图所示:
from matplotlib import pyplot as plt ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.grid(True) plt.show()
上面代码中,调用 grid 函数并传入 True 参数,执行完上述代码后的图形如下图所示:
from matplotlib import pyplot as plt ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者", color="#FF0000", marker=".", linestyle="-") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者", color="#00FF00", marker=".", linestyle="--") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.grid(True) plt.tight_layout() plt.show()
添加 tight_layout 函数的调用后,生成的图形如下图所示:
from matplotlib import pyplot as plt plt.style.use('fivethirtyeight') ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.grid(True) plt.tight_layout() plt.show()
上述代码使用了 fivethirtyeight 样式,生成的图形如下图所示:
from matplotlib import pyplot as plt plt.style.use('ggplot') ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35] dev_y = [38496, 42000, 46752, 49320, 53200, 56000, 62316, 64928, 67317, 68748, 73752] plt.plot(ages_x, dev_y, label="全部开发者") py_dev_y = [45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640] plt.plot(ages_x, py_dev_y, label="Python开发者") plt.xlabel("年龄") plt.ylabel("年薪") plt.title("年龄和薪水的关系") plt.legend() plt.grid(True) plt.tight_layout() plt.show()
生成的图形如下图所示:
同一变量随时间或有序类别而变化的趋势,例如上面的例子中薪水随年龄的变化趋势。
本章我们介绍了折线图的绘制,其中包括图形样式的设置以及折线图的适用场景及不适用场景。
联系客服