本文来自《超简单 利用python让excel飞起来》

121 制作柱形图(方法一)

  • 柱形图通常用于直观地对比数据,在实际工作中使用频率很高。在Python中,可使用Matplotlib模块中的bar()函数制作简单的柱形图。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.bar(x,y,width=0.5,align='center',color='k') #制作柱形图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图标
  • 第5行代码用于根据给出的数据制作柱形图,并对柱子的粗细、位置和填充颜色进行设置,这些设置读者可根据实际需求修改。如果想要制作条形图,将这行代码中的“bar”修改为“barh”即可。
  • 第6行和第7行代码为图表中的文本设置字体,并解决当坐标值为负数时的显示问题,让制作出的图表能正常显示数据和文本内容
  • 第8行代码用于在一个窗口中显示制作的柱形图
  • (1)第1行代码导入的Matplotlib是Python的一个数据可视化模块,其子模块pyplot包含大量用于绘制各类图表的函数。(2)第2行代码中的figure()是pyplot子模块中的函数,用于创建一个绘图窗口。函数的参数figsize用于设置窗口的宽度和高度,单位为英寸(1英寸=0.0254米)。例如,“figsize=(10,4)”表示创建一个宽10英寸、高4英寸的绘图窗口。(3)第5行代码中的bar()是pyplot子模块中的函数,用于制作柱形图。该函数的第1个和第2个参数分别用于设置x坐标的值和y坐标的值。
  • 参数width用于设置柱子的宽度,其值并不表示一个具体的尺寸,而是表示柱子的宽度在图表中所占的比例,默认值为0.8。如果设置为1,则各个柱子会紧密相连;如果设置为大于1的数,则各个柱子会相互交叠。
  • 参数align用于设置柱子的位置与x坐标的关系。默认值为’center’,表示柱子与x坐标居中对齐;如果设置为’edge’,表示柱子与x坐标左对齐。
  • 参数color用于设置柱子的填充颜色,本案例代码中的’k’表示黑色。Matplotlib模块支持多种格式的颜色,这里先介绍最常用的一种颜色格式——用颜色名英文单词的简写定义的8种基础颜色,具体见下表。
  • (4)第6行代码中的“Microsoft YaHei”是微软雅黑字体的英文名称,如果想要使用其他中文字体,可参考下面的字体名称中英文对照表。

    运行结果

122 制作柱形图(方法二)

  • 案例121使用Matplotlib模块制作了简单的柱形图,本案例则要使用pyecharts模块来制作柱形图。
from pyecharts.charts import Bar #导入pyecharts模块中的Bar()函数
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
chart = Bar() #创建一个空白柱形图
chart.add_xaxis(x) #为图表添加x坐标的值
chart.add_yaxis('销售量',y) #为图表添加y坐标的值
chart.render('柱形图.html') #将制定的图表保存为网页文件
  • 第4行代码用于创建一个空白柱形图。第5行代码用于为图表添加x坐标的值。第6行代码用于为图表添加y坐标的值,并指定系列名称为“销售量”。
  • 第7行代码用于将制作的图表保存为网页文件,这里使用相对路径,将文件保存在代码文件所在文件夹下,文件名为“柱形图.html”。读者可根据实际需求修改文件路径。
    运行结果如下

123 制作折线图

  • 折线图常用于显示一段时间内的数据变化趋势。使用Matplotlib模块中的plot()函数可绘制折线图。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.plot(x,y,color='k',linewidth=3,linestyle='solid',marker='s',markersize=10) #制作折线图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第5行代码用于根据给出的数据制作折线图,并对折线的颜色、粗细、线型以及数据标记的符号和大小进行设置,读者可根据实际需求修改这些设置。如果想要制作堆积面积图,将这行代码修改为“plt.stackplot(x,y,color=‘k’)”即可。
  • (2)第5行代码中的plot()是pyplot子模块中的函数,用于制作折线图。该函数的第1个和第2个参数分别用于设置x坐标和y坐标的数据。参数color用于设置折线的颜色,设置方法与案例121中bar()函数的参数color的设置方法相同,这里不再赘述。参数linewidth用于设置折线的粗细,单位为“点”。参数linestyle用于设置折线的线型,可取的值如下表所示。
  • 参数marker用于设置折线图的数据标记,参数markersize则用于设置数据标记的大小。参数marker常用的取值如下表所示。

    运行结果

124 制作饼图

  • 饼图常用于展示各类别数据的占比。使用Matplotlib模块中的pie()函数可绘制饼图。
import matplotlib.pyplot as plt
plt.figure(figsize=(6,4)) #创建一个绘图窗口
x = ['上海','北京','深圳','重庆','大连','成都','天津'] #给出各个类别的标签
y = [120,150,88,70,96,50,40] #给出各个类别的数据
plt.pie(y,labels=x,labeldistance=1.1,autopct='%.2f%%',pctdistance=1.5,counterclock=False,startangle=90,explode=[0.3,0,0,0,0,0,0]) #制作饼图并分离饼图块
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第2行代码用于创建一个绘图窗口,读者可根据实际需求修改窗口的大小。
  • 第3行和第4行代码用于指定制作饼图的数据,然后在第5行代码中使用pie()函数根据这些数据制作饼图,并将饼图中的第1个饼图块分离出来(读者可根据实际需求修改要分离的饼图块)。如果不分离饼图块,那么将第5行代码修改为“plt.pie(y,labels=x,labeldistance=1.1,autopct=’%.2f%%’,pctdistance=1.5,counterclock=False,startangle=90)”。
  • (1)第5行代码中的pie()是pyplot子模块中的函数,用于制作饼图。该函数的第1个参数是饼图块的数据系列值。参数labels用于设置每一个饼图块的数据标签内容。参数labeldistance用于设置每一个饼图块的数据标签与饼图块中心的距离。参数autopct用于设置饼图块的百分比数值的格式。参数pctdistance用于设置百分比数值与饼图块中心的距离。参数counterclock用于设置各个饼图块是逆时针排列还是顺时针排列,为False时表示顺时针排列,为True时表示逆时针排列。参数startangle用于设置第1个饼图块的初始角度,这里设置为90°。参数explode用于设置每一个饼图块与圆心的距离,其值通常是一个列表,列表的元素个数与饼图块的数量相同。本案例将参数explode设置为[0.3,0,0,0,0,0,0],第1个元素为0.3,其他元素均为0,表示将第1个饼图块(上海)分离,其他饼图块的位置不变。
  • (2)如果想要使用pie()函数制作圆环图,可通过设置该函数的参数wedgeprops来实现。例如,将第5行代码修改为如下代码:
plt.pie(y,labels=x,labeldistance=1.1,autopct='%.2f%%',pctdistance=1.5,counterclock=False,startangle=90,wedgeprops={'width':0.3,'linewidth':2,'edgecolor':'w'})
  • 参数wedgeprops用于设置饼图块的属性,其值为一个字典,字典中的元素则是饼图块各个属性的名称和值的键值对。上面这行代码将wedgeprops设置为{‘width’:0.3,‘linewidth’:2,‘edgecolor’:‘w’},表示设置饼图块的环宽(圆环的外圆半径减去内圆半径)占外圆半径的比例为0.3,边框粗细为2,边框颜色为白色。将饼图块的环宽占比设置为小于1的数(这里为0.3),就能绘制出圆环图。
    运行结果

125 添加图表标题和图例

  • 图表标题和图例是增强图表可读性必不可少的元素。本案例以柱形图为例,介绍添加图表标题和图例的方法。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.bar(x,y,width=0.5,align='center',color='k',label='销售量(台)') #制作柱状图并设置图例标签内容
plt.legend(loc='best',fontsize=12) #添加并设置图例
plt.title(label='销售对比图',fontdict={'family':'KaiTi','color':'k','size':25},loc='center') #添加并设置图表标题
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第3行和第4行代码分别给出图表的x坐标和y坐标的数据。第5行代码用于根据给出的数据制作柱形图,并对柱子的粗细、位置和填充颜色进行设置,读者可根据实际需求修改这些设置。
  • 第6行代码用于为图表添加并设置图例。需要注意的是,应先在第5行代码的bar()函数中设置图例标签内容(这里设置为“销售量(台)”,读者可根据实际需求修改),再在第6行代码中设置图例的格式,才能在图表中显示正确的图例效果
  • 第7行代码用于为图表添加图表标题,并对图表标题的字体格式和位置进行设置,读者可根据实际需求修改这些设置。
  • (1)第6行代码中的legend()是pyplot子模块中的函数,用于在图表中添加图例,图例的内容由相应的绘图函数决定。例如,第5行代码使用bar()函数制作柱形图,legend()函数添加的图例图形为矩形色块,图例标签为bar()函数的参数label的值。
  • legend()函数的参数loc用于设置图例的位置,取值可以为字符串或整型数字,具体如下表所示。需要注意的是,‘right’实际上等同于’center right’,这个值是为了兼容旧版本的Matplotlib模块而设立的。
  • (2)第7行代码中的title()是pyplot子模块中的函数,用于添加图表标题。参数label用于设置图表标题的文本内容;参数fontdict用于设置图表标题的文本格式,如字体、颜色、字号等;参数loc用于设置图表标题的位置,可取的值如下表所

126 添加数据标签

  • 在图表上添加数据标签可让图表的数据展示更加直观。本案例以柱形图为例,介绍为图表添加数据标签的方法。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.bar(x,y,width=0.5,align='center',color='k',label='销售量(台)') #制作柱状图并设置图例标签内容
for a,b in zip(x,y):plt.text(x=a,y=b,s=b,ha='center',va='bottom',fontdict={'family':'KaiTi','color':'k','size':15}) #添加并设置数据标签#plt.legend(loc='best',fontsize=12) #添加并设置图例
#plt.title(label='销售对比图',fontdict={'family':'KaiTi','color':'k','size':25},loc='center') #添加并设置图表标题
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • (1)第6行代码中的zip()是Python的内置函数,它以可迭代对象作为参数,将对象中对应的元素配对打包成一个个元组,然后返回由这些元组组成的列表。
  • (2)第7行代码中的text()是pyplot子模块中的函数,用于在图表的指定坐标位置添加文本。参数x和y分别用于设置文本的x坐标和y坐标;参数s用于设置文本的内容;参数ha是horizontal alignment的简写,表示文本在水平方向的位置,可取的值有’center’、‘right’、‘left’;参数va是vertical alignment的简写,表示文本在垂直方向的位置,可取的值有’center’、‘top’、‘bottom’、‘baseline’、‘center_baseline’;参数fontdict用于设置文本的字体格式。
  • text()函数每次只能添加一个文本,如果要给图表的所有数据点添加数据标签,则需配合使用循环。第6行代码使用for语句构造了一个循环,并使用zip()函数将列表x和y的元素逐个配对打包成一个个元组,即(‘1月’,100)、(‘2月’,90)、(‘3月’,88)……的形式,再通过循环变量a和b分别取出每个元组的元素,在第7行代码中传递给text()函数,用于添加数据标签。
    运行结果

127 添加坐标轴标题

import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.bar(x,y,width=0.5,align='center',color='k',label='销售量(台)') #制作柱状图并设置图例标签内容
plt.xlabel('月份',fontdict={'family':'SimSun','color':'k','size':12},labelpad=2) #添加并设置x轴标题
plt.ylabel('销售量(台)',fontdict={'family':'SimSun','color':'k','size':12},labelpad=2) #添加并设置y轴标题
#for a,b in zip(x,y):#plt.text(x=a,y=b,s=b,ha='center',va='bottom',fontdict={'family':'KaiTi','color':'k','size':15}) #添加并设置数据标签#plt.legend(loc='best',fontsize=12) #添加并设置图例
#plt.title(label='销售对比图',fontdict={'family':'KaiTi','color':'k','size':25},loc='center') #添加并设置图表标题
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第6行代码中的xlabel()和第7行代码中的ylabel()都是pyplot子模块中的函数,分别用于为图表添加x轴标题和y轴标题。这两个函数的第1个参数为标题的文本内容,参数fontdict用于设置标题的字体格式,参数labelpad用于设置标题与坐标轴的距离。
    运行结果

128 添加网格线

  • 使用Matplotlib模块制作的图表在默认情况下不显示网格线。本案例以折线图为例,介绍为图表添加网格线的方法。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.plot(x,y,color='k',linewidth=3,linestyle='solid',marker='s',markersize=10) #制作折线图
plt.grid(b=True,axis='both',color='r',linestyle='dotted',linewidth=1) #添加并设置网格线
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第6行代码中的grid()是pyplot子模块中的函数,用于为图表添加网格线。该函数的参数b设置为True时,表示显示网格线(默认同时显示x轴和y轴的网格线)。参数axis用于指定针对哪条坐标轴的网格线进行设置,默认值为’both’,表示同时设置x轴和y轴的网格线,设置为’x’或’y’时则分别表示只设置x轴或y轴的网格线。参数color、linestyle和linewidth分别用于设置网格线的颜色、线型和粗细。
    运行结果

129 调整坐标轴的刻度范围

  • 使用Matplotlib模块制作的图表在默认情况下会自动为坐标轴设置刻度范围。本案例以折线图为例,介绍自定义图表坐标轴刻度范围的方法。
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4)) #创建一个绘图窗口
x = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] #给出x坐标的数据
y = [100,90,88,70,66,50,40,55,56,88,95,98] #给出y坐标的数据
plt.plot(x,y,color='k',linewidth=3,linestyle='solid') #制作折线图
plt.title(label='销售趋势图',fontdict={'family':'KaiTi','color':'k','size':25},loc='center') #添加并设置图表标题
plt.ylim(20,120) #设置y轴的刻度范围
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 本案例的核心代码是第7行,用于为图表设置y轴的刻度范围,这里设置为20~120。读者可按照“知识延伸”的讲解,根据实际需求修改刻度范围。
  • (1)第7行代码中的ylim()是pyplot子模块中的函数,用于设置y轴的刻度范围,函数的两个参数分别为刻度的下限和上限。如果想单独设置y轴刻度的下限或上限,可使用参数bottom和top,相应代码如下:
  • 设置x轴的刻度范围则要使用xlim()函数,通过参数left和right可分别单独设置下限和上限。
  • (2)使用pyplot子模块中的axis()函数可以切换坐标轴的显示和隐藏,相应代码如下:

    运行结果

130 在一张画布中绘制多个图表

  • Matplotlib模块在绘制图表时,默认先建立一张画布,然后在画布中绘制图表。如果想要在一张画布中绘制多个图表,可使用subplot()函数将画布划分为多个区域,然后在各个区域中分别绘制不同的图表。
import matplotlib.pyplot as plt
plt.figure(figsize=(6,4)) #创建一个绘图窗口
x = ['上海','北京','深圳','重庆','大连','成都','天津'] #给出各个类别的标签
y = [120,150,88,70,96,50,40] #给出各个类别的数据
plt.subplot(2,2,1) #指定第1个绘图区域
plt.bar(x,y,width=0.5,align='center',color='r') #制作柱形图
plt.subplot(2,2,2) #指定第2个绘图区域
plt.pie(y,labels=x,labeldistance=1.1,autopct='%.2f%%',pctdistance=1.6) #制作饼图
plt.subplot(2,2,3) #指定第3个绘图区域
plt.plot(x,y,color='r',linewidth=3,linestyle='solid') #制作折线图
plt.subplot(2,2,4) #指定第4个绘图区域
plt.stackplot(x,y,color='r') #制作堆积面积图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • (1)第5、7、9、11行代码中的subplot()是pyplot子模块中的函数,用于将画布划分为多个区域,然后指定绘制图表的区域。subplot()函数的参数为3个整型数字:第1个数字代表将整张画布划分为几行;第2个数字代表将整张画布划分为几列;第3个数字代表要在第几个区域中绘制图表,区域的编号规则是按照从左到右、从上到下的顺序,从1开始编号。该函数的参数也可以写成一个3位的整型数字,如223。使用这种形式的参数时,划分画布的行数和列数均不能超过10。
  • (2)第12行代码中的stackplot()是子模块pyplot中的函数,用于制作堆积面积图。
    运行结果

131 在一个工作表中插入图表

  • 除了在绘图窗口中显示绘制的图表,还可以将绘制的图表插入工作表。如右图所示为工作簿“各月销售数量表.xlsx”的工作表“1月”中的销售数量数据,现要使用这些数据制作一个柱形图,并插入工作表中。
import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
figure = plt.figure(figsize=(10,4)) #创建一个绘图窗口
data = pd.read_excel('各月销售数量表.xlsx',sheet_name='1月') #从指定工作簿的工作表中读取数据
x = data['配件名称'] #指定“配件名称”列的数据作为x坐标的值
y = data['销售数量'] #指定“销售数量”列的数据作为y坐标的值
plt.bar(x,y,width=0.5,align='center',color='k') #制作柱形图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
app = xw.App(visible=False,add_book=False) #启动Excel程序
workbook = app.books.open('各月销售数量表.xlsx') #打开要插入图表的工作簿
worksheet = workbook.sheets['1月'] #指定要插入图表的工作表
worksheet.pictures.add(figure,left=500) #在指定工作表中插入柱形图
workbook.save('各月销售数量表1.xlsx') #另存工作簿
workbook.close() #关闭
  • 第14行代码中的add()是xlwings模块中Pictures对象的一个函数,用于在工作表中插入图片。该函数的第1个参数可以是用Matplotlib模块制作的图表,也可以是图片文件的路径;参数left用于设置图片的左边距,如果要设置图片的顶边距,可以使用参数top。

132 在一个工作簿的所有工作表中插入图表

import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
all_data = pd.read_excel('各月销售数量表.xlsx',sheet_name=None) #读取工作簿中所有工作表的数据
app = xw.App(visible=False,add_book=False) #启动Excel程序
workbook = app.books.open('各月销售数量表.xlsx') #打开要插入图表的工作簿
worksheet = workbook.sheets #获取工作簿中的所有工作表
for i in all_data:figure = plt.figure(figsize=(10,4)) #创建一个绘图窗口data = all_data[i] #提取指定工作表的数据x = data['配件名称']  # 指定“配件名称”列的数据作为x坐标的值y = data['销售数量']  # 指定“销售数量”列的数据作为y坐标的值plt.bar(x, y, width=0.5, align='center', color='k')  # 制作柱形图plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 为图表中的文本设置默认字体,以避免中文显示为乱码的问题plt.rcParams['axes.unicode_minus'] = False  # 解决坐标值为负数时无法正常显示负号的问题worksheet[i].pictures.add(figure,left=500) #在指定工作表中插入柱形图
workbook.save('各月销售数量表1.xlsx') #另存工作簿
workbook.close() #关闭
app.quit() #退出Excel程序

133 制作散点图

import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
figure = plt.figure(figsize=(10,4)) #创建一个绘图窗口
data = pd.read_excel('客户满意度.xlsx',sheet_name='Sheet1') #从指定工作簿的工作表中读取数据
x = data['收货天数(天)'] #指定“收货天数(天)“列的数据作为x坐标的值
y = data['客户满意度'] #指定”客户满意度“列的数据作为y坐标的值
plt.scatter(x,y,s=100,marker='o',color='k') #制作散点图
x1 = x.to_numpy().reshape(-1,1) #将自变量数据转换为二维数组格式
model = linear_model.LinearRegression().fit(x1,y) #创建并训练一个线性回归模型
y1 = model.predict(x1) #利用训练好的模型预测客户满意度
plt.plot(x,y1,color='k',linewidth='3',linestyle='solid') #制作线性趋势线
plt.title(label='收货天数与客户满意度关系图',fontdict={'family':'KaiTi','color':'k','size':25},loc='center') #添加图表标题
plt.xlabel('收获天数(天)',fontdict={'family':'SimSun','color':'k','size':12},labelpad=2) #添加x轴标题
plt.ylabel('客户满意度',fontdict={'family':'SimSun','color':'k','size':12},labelpad=2) #添加y轴标题
plt.xlim(0,22.5) #设置x轴的刻度范围
plt.ylim(0,12) #设置y轴的刻度范围
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第9行代码先用to_numpy()函数将自变量数据转换为一维数组,再用reshape()函数将一维数组转换为二维数组。reshape()函数的两个参数分别表示二维数组的行数和列数。例如,reshape(3,4)表示转换为3行4列的二维数组。本案例的reshape(-1,1)中,-1表示不指定行数,而是根据数组的元素个数和列数自动计算行数,1则表示列数为1。

134 制作涟漪特效散点图

  • 案例133使用Matplotlib模块中的scatter()函数制作散点图,本案例则要使用pyecharts模块中的EffectScatter()函数制作带有涟漪特效的散点图。
import pandas as pd
import pyecharts.options as opts #导入pyecharts模块中的子模块options
from pyecharts.charts import EffectScatter #导入pyecharts模块中的EffectScatter()函数
data = pd.read_excel('客户满意度.xlsx',sheet_name='Sheet1') #从指定工作簿的工作表中读取数据
x = data['收货天数(天)'] #指定“收货天数(天)“列的数据作为x坐标的值
y = data['客户满意度'] #指定”客户满意度“列的数据作为y坐标的值
chart = EffectScatter() #创建一个空白散点图
chart.add_xaxis(x) #为图表添加x坐标的值
chart.add_yaxis(series_name='收货天数(天),客户满意度',y_axis=y,label_opts=opts.LabelOpts(is_show=False),symbol_size=15) #为图表添加y坐标的值
chart.set_global_opts(title_opts=opts.TitleOpts(title='收货天数与客户满意度散点图'),yaxis_opts=opts.AxisOpts(type_='value',name_gap=40),tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a}:{c}')) #为图表添加图表标题和坐标轴标题
chart.render('散点图.html') #将制作的图表保存为一个网页文件
  • (1)第7行代码中的EffectScatter()是pyecharts模块的子模块charts中的函数,用于制作带有涟漪特效的散点图。
  • (2)在pyecharts模块中,用于配置图表元素的选项称为配置项。配置项分为全局配置项和系列配置项,这里主要介绍全局配置项。如果读者想了解配置项的更多知识,可以查阅pyecharts模块的官方文档,网址为https://pyecharts.org/#/zh-cn/global_options。
  • (2)在pyecharts模块中,用于配置图表元素的选项称为配置项。配置项分为全局配置项和系列配置项,这里主要介绍全局配置项。如果读者想了解配置项的更多知识,可以查阅pyecharts模块的官方文档,网址为https://pyecharts.org/#/zh-cn/global_options。
  • AxisOpts()为图表分别添加了y轴标题“客户满意度”和x轴标题“收货天数(天)”。该函数的参数type_用于设置坐标轴的类型,这里设置为’value’(数字轴),还可以设置为’category’(类目轴)、‘time’(时间轴)、‘log’(对数轴);参数name用于设置坐标轴标题的文本内容;参数name_location用于设置坐标轴标题相对于轴线的位置,这里设置为居中显示;参数name_gap用于设置坐标轴标题与轴线的间距,这里设置为40 px。
  • TooltipOpts()设置了图表的提示框,也就是将鼠标指针放在图表的数据系列上时弹出的提示信息。
    运行结果

135 制作气泡图

  • 本案例要使用Matplotlib模块制作气泡图。气泡图其实是在散点图的基础上升级改造而成的:在原有的x坐标和y坐标两个变量的基础上引入第3个变量,并用气泡的大小来表示。因此,制作气泡图同样要用到scatter()函数,只是参数的设置上有些区别。如右图所示,工作簿“销售统计表.xlsx”中记录了不同产品的销售量、销售额、毛利率数据,下面制作一个气泡图来同时展示不同产品的3类数据。
import matplotlib.pyplot as plt
import pandas as pd
plt.figure(figsize=(10,5)) #创建一个绘图窗口
data = pd.read_excel('销售统计表.xlsx',sheet_name='Sheet1') #从指定工作簿的工作表中读取数据
n = data['产品名称'] #指定“产品名称”列的数据作为数据标签的内容
x = data['销售量(台)'] #指定“销售量(台)“列的数据作为x坐标的值
y = data['销售额(元)'] #指定”销售额(元)“列的数据作为y坐标的值
z = data['毛利率(%)'] #指定“毛利率(%)”列的数据作为气泡的大小
plt.scatter(x,y,s=z*5000,color='r',marker='o') #制作气泡图
plt.xlabel('销售量(台)',fontdict={'family':'Microsoft YaHei','color':'k','size':12},labelpad=2) #添加并设置y轴标题
plt.ylabel('销售额(元)',fontdict={'family':'Microsoft YaHei','color':'k','size':12},labelpad=2) #添加并设置y轴标题
plt.title('销售量、销售额与毛利率关系图',fontdict={'family':'Microsoft YaHei','color':'k','size':12},loc='center') #添加并设置图表标题
for a,b,c in zip(x,y,n):plt.text(x=a,y=b,s=c,ha='center',va='center',fontsize=12,color='w') #添加并设置数据标签
plt.xlim(20,100) #设置x轴的刻度范围
plt.ylim(0,50000) #设置y轴的刻度范围
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第5~8行代码分别指定数据标签的文本内容、x坐标的值、y坐标的值、气泡的大小,读者可根据实际需求修改列名。
  • 第9行代码使用指定的数据制作气泡图,并对气泡图中气泡的大小、填充颜色和形状进行设置,读者可根据实际需求修改这些设置。这里将气泡的大小设置为毛利率的5000倍,这是因为毛利率的值比较小,如果不放大,则绘制出的气泡太小,导致图表不美观。
  • 第10~16行代码用于为图表添加坐标轴标题、图表标题、数据标签,并设置坐标轴的刻度范围,从而让图表更加美观。读者可根据实际需求修改这些图表元素的设置。
    运行结果

136 制作组合图表

  • 组合图表是指在一个坐标系中绘制多张图表,其制作方法和单个图表的制作方法基本相同,区别在于单个图表中的x坐标值和y坐标值都只有一组,而组合图表的x坐标值可能会被多组y坐标值共用。如右图所示,工作簿“各月销售额统计表.xlsx”中记录了12个月的销售额数据和同比增长率,下面用Matplotlib模块制作一个柱形图和折线图的组合图表,同时展示各月的销售额对比情况和同比增长率的变化趋势
import matplotlib.pyplot as plt
import pandas as pd
plt.figure(figsize=(12,5)) #创建一个绘图窗口
data = pd.read_excel('各月销售额统计表.xlsx',sheet_name='Sheet1') #从指定工作簿的工作表中读取数据
x = data['月份'] #指定“月份“列的数据作为x坐标的值
y1 = data['销售额(万元)'] #指定”销售额(万元)“列的数据作为y坐标的第1组值
y2 = data['同比增长率'] #指定“同比增长率”列的数据作为y坐标的第2组值
plt.bar(x,y1,color='y',label='销售额(万元)') #制作柱形图
plt.legend(loc='upper left',fontsize=12) #添加并设置图例
plt.twinx() #为图表设置次坐标轴
plt.plot(x,y2,color='r',linewidth='3',label='同比增长率') #制作折线图
plt.legend(loc='upper right',fontsize=10) #添加并设置图例
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第10行代码中的twinx()是Matplotlib模块的子模块pyplot中的函数,用于为图表设置次坐标轴。
    运行结果

137 制作雷达图

  • 雷达图可以看成由一条或多条闭合的折线组成,常用于同时比较和分析多个指标。如右图所示,工作簿“员工能力评价表.xlsx”中记录了3个员工的多项能力评价指标的分值,下面通过制作雷达图来评估这3个员工的综合能力。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
colors = ['r','g','y'] #为每个员工设置图表中的显示颜色
data = pd.read_excel('员工能力评价表.xlsx',sheet_name='Sheet1',index_col=0).T #从指定工作簿的工作表中读取数据,并转置数据表格
staff = data.index.to_list() #从行索引中获取员工名称
column = data.columns.to_list() #从列索引中获取评价指标名称
angle = np.linspace(0.1 * np.pi,2.1 * np.pi,len(column),endpoint=False) #根据评价指标的个数对圆形进行等分
angle = np.concatenate((angle,[angle[0]])) #连接刻度线数据
column = np.concatenate((column,[column[0]])) #连接指标名称数据
figure = plt.figure(figsize=(8,6)) #创建一个绘图窗口
ax = figure.add_subplot(1,1,1,projection='polar') #设置图表在窗口中的显示位置,并设置坐标体系为极坐标
for i,j in enumerate(staff):staff_data = data.loc[j] #获取员工的指标值数据staff_data = np.concatenate((staff_data,[staff_data[0]])) #连接员工的指标分值数据ax.plot(angle,staff_data,linestyle='-',linewidth=2,color=colors[i],label=str(j)) #制作雷达图ax.fill(angle,staff_data,color=colors[i],alpha=0.7) #为雷达图填充颜色
ax.legend(loc=4,bbox_to_anchor=(1.15,-0.07)) #添加并设置图例
ax.set_thetagrids(angle * 180 / np.pi,column,fontsize=12) #添加并设置数据标签
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #为图表中的文本设置默认字体,以避免中文显示为乱码的问题
plt.rcParams['axes.unicode_minus'] = False #解决坐标值为负数时无法正常显示负号的问题
plt.show() #显示绘制的图表
  • 第6行代码用于从行索引中获取员工名称,制作的雷达图中会显示所有员工的数据。如果只想显示指定员工的数据,如只显示“A员工”的数据,则将这行代码修改为“staff=[‘A员工’]”。
  • 第11行代码创建了一张宽8英寸、高6英寸的画布。第12行代码将这张画布划分为1行1列,指定在第1个区域中绘图,并设置坐标体系为极坐标。第13~17行代码通过构造循环,为各个员工绘制雷达图。
  • 第18行代码用于在图表中添加图例,legend()函数的参数loc=4表示将图例放置在右下角,参数bbox_to_anchor则用于确定图例在坐标轴方向上的位置。第19行代码用于在图表中添加数据标签。
  • (1)第5行代码中read_excel()函数的参数index_col用于指定以工作表中的哪一列数据作为DataFrame的行索引,这里设置为0,表示以第1列(即“评价指标”列)作为行索引。T则是DataFrame对象的属性,可生成转置行列后的新DataFrame。此时的data如下图所示。
  • (2)第6行代码先用index属性获取DataFrame的行索引,再用to_list()函数转换为列表,得到员工名称的列表。第7行代码先用columns属性获取DataFrame的列索引,再用to_list()函数转换为列表,得到评价指标名称的列表。
  • 第14行代码中的loc是DataFrame对象的属性,用于根据行索引从DataFrame中选取行数据。
  • (3)第8行代码中的linspace()是NumPy模块中的函数,用于在指定的区间内返回均匀间隔的数值。该函数的第1个和第2个参数分别是区间的起始值和终止值;第3个参数用于指定生成的数值的数量,取值必须是非负数,默认值为50;参数endpoint用于指定结果是否包含终止值,如果省略该参数或者设置为True,则结果中一定会有终止值,如果为False,则结果中一定没有终止值。演示代码如下:
  • 上述演示代码的第2行表示在0~100之间生成5个均匀分布的数值,且第一个数值是0,最后一个数值是100,其他3个数值分布在0~100之间。代码运行结果如下:
  • 如果在演示代码第2行的linspace()函数中添加参数endpoint并设置为False,则会得到如下所示的运行结果:
  • (4)第9、10、15行代码中的concatenate()也是NumPy模块中的函数,用于一次完成多个数组的拼接。
  • (5)第12行代码中的add_subplot()是Matplotlib模块的子模块pyplot中的函数,用于在一张画布上划分区域,以绘制多张子图。函数中的“1,1,1”表示将画布划分成1×1的区域,然后在第1个区域(区域按从左到右、从上到下的顺序编号)中绘制图表;projection='polar’表示设置坐标体系为极坐标。
  • (6)第17行代码中的fill()是Matplotlib模块的子模块pyplot中的函数,用于为由一组坐标值定义的多边形区域填充颜色。

138 制作漏斗图

  • 漏斗图用于呈现从上到下几个阶段的数据,各阶段的数据逐渐变小。本案例要使用pyecharts模块中的Funnel()函数绘制一个漏斗图,展示电商网站上从浏览商品到完成交易各阶段人数的变化。
import pyecharts.options as opts
from pyecharts.charts import Funnel
x = ['浏览商品','放入购物车','生成订单','支付订单','完成交易'] #给出x坐标的数据
y = [1200,800,300,280,250] #给出y坐标的数据
data = [i for i in zip(x,y)] #将列表打包成一个个元组,并将这些元组组成一个列表
chart = Funnel() #创建一个空白漏斗图
chart.add(series_name='人数',data_pair=data,label_opts=opts.LabelOpts(is_show=True,position='inside'),tooltip_opts=
opts.TooltipOpts(trigger='item',formatter='{a}:{c}')) #为图表添加系列名称、系列数据值和提示框
chart.set_global_opts(title_opts = opts.TitleOpts(title='电商网络流量转化漏斗图',pos_left='center'),legend_opts=opts.LegendOpts(is_show=False)) #为图表添加图表标题并隐藏图例
chart.render('漏斗图.html') #将制作的图表保存为一个网页文件
  • 第3行和第4行代码分别给出图表的x坐标和y坐标的值。第5行代码将列表x和y中对应的元素配对打包成一个个元组,然后将这些元组组成一个列表。这一操作必不可少,因为第6行代码中的Funnel()函数要求图表的数据格式必须是由元组组成的列表,即[(key_1,value_1),(key_2,value_2),…,(key_n,value_n)]的格式。
  • 第7行代码用于添加并设置图表的系列名称、系列数据值和提示框等。第8行代码用于为图表添加图表标题并隐藏图例。第9行代码用于将制作的图表保存为一个网页文件,此处保存在代码文件所在文件夹下,文件名为“漏斗图.html”,读者可根据实际需求修改保存路径。
  • (1)第5行代码使用了列表推导式来让代码变得简洁,其等同于如下代码:
  • (2)第7行代码中,add()函数的参数series_name用于指定系列名称,这里指定为“人数”。参数data_pair用于指定系列数据值。参数label_opts用于设置标签,标签的配置项又有多个参数:参数is_show用于控制是否显示标签,为True时显示标签,为False时不显示标签;参数position用于设置标签的位置,这里设置为’inside’,表示标签显示在图表内部,该参数的值还可以为’top’、‘left’、‘right’等。参数tooltip_opts用于设置提示框,提示框的配置项又有多个参数:参数trigger用于设置提示框的触发类型,其值一般设置为’item’,表示当鼠标指针放置在数据系列上时显示提示框;参数formatter用于设置提示框的显示内容,这里的’{a}‘代表系列名称,’{c}'代表数据值。
  • (3)第8行代码中set_global_opts()函数的配置项函数TitleOpts()用于为图表添加图表标题,并通过参数pos_left设置图表标题居中显示。配置项函数LegendOpts()的参数is_show设置为False,表示不显示图例。

139 制作水球图

  • 水球图适合用于展示单个百分数。本案例要使用pyecharts模块中的Liquid()函数绘制水球图。
import pyecharts.options as opts
from pyecharts.charts import Liquid #导入pyecharts模块中的Liquid()函数
actual_sale1 = 900000 #指定第1个地区的实际销售业绩
actual_sale2 = 1589000 #指定第2个地区的实际销售业绩
actual_sale3 = 285200 #指定第3个地区的实际销售业绩
target_sale = 1200000 #指定3个地区的目标销售业绩
chart = Liquid() #创建一个空白水球图
chart.set_global_opts(title_opts=opts.TitleOpts(title='各地区销售业绩达成率',pos_left='center')) #添加并设置图表标题
chart.add(series_name='北京',data=[actual_sale1/target_sale],shape='circle',center=['20%','50%']) #制作第1个地区的水球
chart.add(series_name='上海',data = [actual_sale2/target_sale],shape='circle',center=['50%','50%']) #制作第2个地区的水球
chart.add(series_name='成都',data=[actual_sale3/target_sale],shape='circle',center=['80%','50%']) #制作第3个地区的水球
chart.render('水球图.html') #将制作的图表保存为一个网页文件
  • 第9~11行代码使用add()函数依次在水球图中绘制了3个水球。该函数的参数data用于指定系列数据,本案例要展示销售业绩达成率,所以使用实际销售业绩除以目标销售业绩,需要注意的是,该参数的值必须为列表格式。参数shape用于设置水球的形状,该参数的值可以为’circle’、‘rect’、‘roundrect’、‘triangle’、‘diamond’、‘pin’、‘arrow’,对应的形状分别为圆形、矩形、圆角矩形、三角形、菱形、地图图钉、箭头,默认形状为圆形。参数center用于指定水球的中心点在图表中的位置。
    运行结果

140 制作仪表盘

  • 仪表盘同水球图一样,也适合用于展示单个百分数。本案例要使用pyecharts模块中的Gauge()函数绘制仪表盘。
import pyecharts.options as opts
from pyecharts.charts import Gauge
chart = Gauge() #创建一个空白仪表盘
chart.add(series_name='业务指标',data_pair=[('完成率',70.95)],split_number=10,radius='75%',start_angle=225,end_angle=-45,is_clock_wise=True,title_label_opts=opts.GaugeTitleOpts(font_size=30,color='red',font_family='Microsoft YaHei'),detail_label_opts=opts.GaugeDetailOpts(is_show=False)) #为仪表盘添加数据并设置仪表盘的样式
chart.set_global_opts(legend_opts=opts.LegendOpts(is_show=False),tooltip_opts=opts.TooltipOpts(is_show=True,formatter='{a}<br/>{b}:{c}%')) #隐藏图例并设置提示框
chart.render('仪表盘.html') #将制作的图片保存为一个网页文件
  • 第4行代码中add()函数的参数data_pair用于给出仪表盘的系列数据项;参数split_number用于指定仪表盘的平均分割段数,这里设置为10段;参数radius用于设置仪表盘的半径,其值可以是百分数或数值;参数title_label_opts用于设置仪表盘内标题文本标签的配置项。
    运行结果

141 制作词云图

  • 词云图是一种用于展示高频关键词的图表,它通过文字、颜色、图形的搭配产生极具冲击力的视觉效果。如右图所示,工作簿“图书销量表.xlsx”中记录了多种图书的销售量数据,下面使用pyecharts模块中的WordCloud()函数制作一个词云图,直观地展示不同图书的销量大小。
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import WordCloud #导入pyecharts模块中的WordCloud()函数
data = pd.read_excel('图书销量表.xlsx',sheet_name='Sheet1') #从指定工作簿的工作表中读取数据
name = data['书名'] #指定“书名”列为各个类别的标签
value = data['销售量(本)'] #指定“销售量(本)”列为各个类别的数据
data1 = [i for i in zip(name,value)] #将列表打包成一个个元组,并将这些元组组成一个列表
chart = WordCloud() #创建一个空白词云图
chart.add('销售量(本)',data_pair=data1,shape='star',word_size_range=[10,60]) #设置词云图的外形轮廓和字号大小的范围
chart.set_global_opts(title_opts=opts.TitleOpts(title='图书销量分析',title_textstyle_opts=opts.TextStyleOpts(font_size=30)),tooltip_opts=opts.TooltipOpts(is_show=True)) #为词云图添加并设置图表标题chart.render('词云图.html') #将制作的图表保存为一个网页文件
  • (1)第7行代码是一个列表推导式,其等同于如下代码。
  • (2)与水球图类似,通过设置第9行代码中add()函数的参数shape,可改变词云图的外形轮廓。该参数可取的值有’circle’、‘cardioid’、‘diamond’、‘triangle-forward’、‘triangle’、‘pentagon’、‘star’,对应的形状分别为圆形、心形、菱形、指向右侧的三角箭头、三角形、五边形、星形。如果省略该参数,则词云图的外形轮廓为矩形。
    运行结果

用python让excel飞起来(第7章 图表操作)相关推荐

  1. 用python让excel 飞起来(数据处理与分析操作)

    本文来自<超简单:用Python让Excel飞起来> Excel能完成一般办公中绝大多数的数据分析工作,但是当数据量大.数据表格多时,可借助Python中功能丰富而强大的第三方模块来提高工 ...

  2. Python让Excel飞起来—批量进行数据分析

    目录 案例01 批量升序排序一个工作簿中的所有工作表 举一反三 批量排序多个工作簿中的数据 案例02 筛选一个工作簿中的所有工作表数据 举一反三 在一个工作簿中筛选单一类别数据 案例03 对多个工作簿 ...

  3. Python让Excel飞起来—批量处理行、列和单元格

    目录 案例01 精确调整多个工作簿的行高和列宽 举一反三 精确调整一个工作簿中所有工作表的行高和列宽 案例02 批量更改多个工作簿的数据格式 举一反三 批量更改多个工作簿的外观格式 案例03 批量替换 ...

  4. 用python让excel飞起来(第5章 单元格操作)

    本文来源于 <超简单用python让Excel飞起来> 在Excel中,行和列都是由一个个单元格组成的.因此,学习完行和列的操作,就需要接着学习单元格的操作.本章将详细介绍如何通过Pyth ...

  5. 用python让excel飞起来(行/列操作)

    本文内容来源于<超简单:用Python让Excel飞起来实战150例> Excel的工作表是由行和列组成的,因此,学习完工作表的操作,就需要接着学习行和列的操作.本章将详细介绍如何使用Py ...

  6. python怎么编写在线excel_超简单:用Python让Excel飞起来(零基础学python,用python实现办公自动化)...

    王秀文,有超过6年的后端开发.运维开发经验,擅长Python.Node.js.Java.Go等主流编程语言.曾参与翻译Elasticsearch官方技术文档.有IoT系统开发经验和CRM系统设计开发经 ...

  7. excel调用python编程-超简单:用Python让Excel飞起

    本书对于编程知识零基础的办公人士特别友好,其摒弃了晦涩的理论讲解,引入了实用的办公场景,为办公人士开辟了一条学习办公自动化的新路.本书精选典型办公案例以及通俗易懂的讲解,有助于办公人士掌握Python ...

  8. python可以帮助做excel-超简单:用Python让Excel飞起

    本书对于编程知识零基础的办公人士特别友好,其摒弃了晦涩的理论讲解,引入了实用的办公场景,为办公人士开辟了一条学习办公自动化的新路.本书精选典型办公案例以及通俗易懂的讲解,有助于办公人士掌握Python ...

  9. python在excel应用实例视频-超简单:用Python让Excel飞起

    本书对于编程知识零基础的办公人士特别友好,其摒弃了晦涩的理论讲解,引入了实用的办公场景,为办公人士开辟了一条学习办公自动化的新路.本书精选典型办公案例以及通俗易懂的讲解,有助于办公人士掌握Python ...

最新文章

  1. 建筑物占据的网格数目的确定(三)
  2. C++编程思想重点笔记(下)
  3. tensorflow代码中的tf.app.run()
  4. ubuntu 设置 时区 更新时间
  5. 《俄罗斯方块》正版授权手游开启预约:支持QQ、微信双平台
  6. 大数据隐私保护技术之脱敏技术
  7. 【QA】揭开知识库问答KB-QA的面纱1·简介篇
  8. c++ __declspec
  9. 【 PID 算法 】PID 算法基础
  10. 今天来告诉你caj文件怎么打开
  11. SWF游戏软件逆向基础知识1
  12. 去除 华军 恶心的广告验证码
  13. 相机标定(Camera calibration)原理、步骤
  14. matlab编程测试教程,Matlab实验1 MATLAB的基本操作、编程基础
  15. 杭电OJ 1129(C++)
  16. 视频教程-软考信息系统项目管理师考试视频辅导课程-项目管理
  17. Laravel本地Sail开发环境下Phpstorm+浏览器+Postman调试配置
  18. 企业服务器托管比租用有哪些优势
  19. 小花梨判连通(DFS或BFS或并查集+vector+map)——“美登杯”上海市高校大学生程序设计邀请赛 (华东理工大学)
  20. vlc web 登录账号_最简单的VLC网页播放器

热门文章

  1. 如何学习opencv源码
  2. Java MD5和SHA256等常用加密算法
  3. 不相信九江大桥事故专家鉴定的五大理由
  4. Python学习基础笔记三十二——正则表达式
  5. Gherkin语法详解之Transforming Data Tables(六)
  6. Java jcmd内存远大于top_Java堆外内存排查小结
  7. java线程状态和状态切换
  8. 主成分分析——PCA
  9. zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据
  10. go(gin框架)session底层使用redis实现(gorilla/sessions和gin-contrib/sessions)