上一篇我们利用画了气泡图(相关链接:),本期的教程是将气泡矩阵图原来的气泡变成饼图或环图,从而使技术功效气泡图增加一个新的数据分析维度。
感谢上一篇读者Zoe,Nano的留言和建议,这次我们的程序增加了数据标签的显示功能,插入了可选择R语言绘图风格的语句,并改进了自动添加坐标,这个版本的程序不需要再手动在程序里逐一键入坐标轴上的“技术手段”和“技术效果”啦,可以自动对应Excel坐标生成横纵坐标标签。
糖果色气泡饼/气泡环自动生成方法:
STEP 1:
将Excel(示例数据:百度网盘链接:,密码: v5vw)按照如下格式准备好。
Excel包含多个工作表,第一个工作表中是技术功效表,其中的数据大小代表气泡的大小(也就是饼图或者环图大小),如下图所示:
其他的工作表中是每一个细分技术领域(技术手段和技术效果相对应的细分技术领域)中的文献分布,比如可以是该细分技术领域的主要申请人、主要国家、或是专利的法律状态等,如下图所示:
将该Excel表命名为“散饼数据表.xlsx”。如果你要修改这个Excel表的名称,那么对应的修改程序中的“散饼数据表.xlsx”即可。
STEP2:
1)将程序复制粘贴至中的源程序编辑器(单击file,new file,跳出一个新文件)
2) 复制程序,修改读入excel名称、设置图片标题(修改“XXX”改为所需的领域):
3) 保存,单击F5或者绿色向右的小箭头。
得到如下效果:
矩阵气泡饼图
矩阵气泡饼图
中心红色数据为该环的数据量总和,三个黑色数据为不同部分的数据量:
是不是很简单呢~
“矩阵气泡饼图”程序及说明如下:
numpy as np #导入的数值计算扩展包numpy,并重命名为np
. as plt #导入的绘图扩展包,并重新命名为plt
as pd #导入的数据处理扩展包,并重命名为pd,该包用于读写excel文件
. as
#plt.style.use(”)#打开或者关闭R语言风格绘图
=pd.(‘散饼数据表.xlsx’,’工作表1′)#从excel的工作表1中读出数据,sheet名称根据实际情况修改
x=[i+1for i in range(len(.))]#获取数据表的列,作为x轴辅助绘图数据
=[i for i (len(.index))]#获取纵轴有多少行
y = [[i for in range(len(x))] for i in range(1,len()+1)]#生成y轴辅助数据
fig, ax = plt.()#创建子图
= [‘gold’, ”, ”,”]#颜色列表
ax.set(=”equal”)#设置图形的对称,不然饼会椭圆
for index in range(len()):#对转置后的每一列进行循环
for i,j,r inzip(x,y[index],.T[.index[index]]):#循环执行,每次从x,y[index]中读取一个数,从转置后的excel表格中读取一列中的一个数据
sheet=pd.(‘散饼数据表.xlsx’,str(.[i-1])+str(.index[index]))#从excel中的相应sheet中读取数据,根据excel中的工作表名修改
ifr/max(.max())/2 < 0.2:
ax.pie(sheet[‘数量’], =None, =None, =’w’,
=’%d’, =False, =90,=1/2,=(i, j),frame=True,={”:8})#绘制散饼图
ax.pie(sheet[‘数量’], =None, =None, =,
=None, =False, =90,=r/max(.max())/2,=(i,j),frame=True)
else:
ax.pie(sheet[‘数量’], =None, =None, =,
=’%d’, =False, =90,=r/max(.max())/2,=(i,j),frame=True,={”:8})#绘制散饼图,面积大小由调节。
#ax.pie([1], =np.sqrt(r/np.pi)/30/2,=’w’,=(i,j),frame=True)#增加甜甜圈的圈,圈大小由调节
#ax.text(i,j,str(r),=int(np.sqrt(r/np.pi)*0.8),
#=”,=”)#增加数据标签,字体大小由调节
plt.grid(True)#增加栅格
plt.(‘技术手段分类’,size=14)#x轴说明
plt.(‘技术效果’,size=14)#y轴说明
plt.title(‘XXX领域技术功效分析’,size=14)#图片名称
plt.(x,.)#利用excel表中的表格横轴更新x轴标度
plt.([i+1for i (len(.index))],list(.index),size=14)#利用excel表中的表格纵轴更新y轴标度
plt.xlim(0,len(.)+1)#设置x轴范围,美化图表
plt.ylim(0,len(.index)+1)#设置y轴范围,美化图表
plt.(=[.Patch(color=[i],label=(sheet.index[i])) for i in range(len(sheet.index))]
,loc=’best’,=(1.05,1.0), =0.)
plt.show()#显示图片
“矩阵气泡环图”程序及说明如下:
numpy as np #导入的数值计算扩展包numpy,并重命名为np
. as plt #导入的绘图扩展包,并重新命名为plt
as pd #导入的数据处理扩展包,并重命名为pd,该包用于读写excel文件
. as #导入用于生成图例的库
#plt.style.use(”)#打开或者关闭R语言风格绘图
=pd.(‘散饼数据表.xlsx’,’工作表1′)#从excel的工作表1中读出数据,sheet名称根据实际情况修改
x=[i+1for i in range(len(.))]#获取数据表的列,作为x轴辅助绘图数据
=[i for i (len(.index))]#获取纵轴有多少行
y = [[i for in range(len(x))] for i in range(1,len()+1)]#生成y轴辅助数据
fig, ax = plt.()#创建子图
= [”, ‘gold’, ”, ”]#颜色列表
ax.set(=”equal”)#设置图形的对称,不然饼会椭圆
for index in range(len()):#对转置后的每一列进行循环
for i,j,r inzip(x,y[index],.T[.index[index]]):#循环执行,每次从x,y[index]中读取一个数,从转置后的excel表格中读取一列中的一个数据
sheet=pd.(‘散饼数据表.xlsx’,str(.[i-1])+str(.index[index]))#从excel中的相应sheet中读取数据,根据excel中的工作表名修改
ifnp.sqrt(r/np.pi)/30 < 0.4:
ax.pie(sheet[‘数量’], =None, =None, =’w’,
=’%d’, =False, =90,=1/2,=(i, j),frame=True,={”:8})#绘制散饼图
ax.pie(sheet[‘数量’], =None, =None, =,
=None, =False, =90,=r/max(.max())/2,=(i,j),frame=True)
else:
ax.pie(sheet[‘数量’], =None, =None, =,
=’%d’, =False, =90,=r/max(.max())/2,=(i,j),frame=True,={”:8})#绘制散饼图,面积大小由调节。
ax.pie([1], =r/max(.max())/2/2,=’w’,=(i,j),frame=True)#增加甜甜圈的圈,圈大小由调节
ax.text(i,j,str(r),=8,
=”,=”,color=’red’)#增加数据标签,字体大小由调节
plt.grid(True)#增加栅格
plt.(‘技术手段分类’,size=14)#x轴说明
plt.(‘技术效果’,size=14)#y轴说明
plt.title(‘XXX领域技术功效分析’,size=14)#图片名称
plt.(x,.)#利用excel表中的表格横轴更新x轴标度
plt.([i+1for i (len(.index))],list(.index),size=14)#利用excel表中的表格纵轴更新y轴标度
plt.xlim(0,len(.)+1)#设置x轴范围,美化图表
plt.ylim(0,len(.index)+1)#设置y轴范围,美化图表
plt.(=[.Patch(color=[i],label=(sheet.index[i])) for i in range(len(sheet.index))]
,loc=’best’,=(1.05,1.0), =0.)#增加图例,并将其移到图框外显示
plt.show()#显示图片
上一篇的留言里,有读者采用R语言绘制了气泡图并分享了程序,很开心能抛砖引玉,欢迎大家一起探讨用不同的方式来实现数据可视化。
相关链接:
发表回复