梁先国SEO专注网站优化,让您网站更具价值!

当前位置:首页 > WEB前端学习 > 手把手教你如何利用Python绘制技术功效图的方法【附实战作图详解】

手把手教你如何利用Python绘制技术功效图的方法【附实战作图详解】

时间:2018-08-10 12:20 来源:重庆网站制作公司(www.seozol.cn) 作者:重庆网站建设公司

今天梁先国网络科技来教大家用Python画技术功效气泡图。
 
编程小白不要觉得看不懂代码就被吓退了,其实就是把代码拷进去,一键式粘贴,代码基本不用改,但是要注意Excel里面的数据设置和命名。下面就一起来具体看看吧。
 
1.安装开发环境
 
首先需要下载Python的操作软件Anaconda。
 
Anaconda的下载地址为:https://www.anaconda.com/download/#macos
 
打开下载链接后,可以看到提供三个操作系统的下载选项。
 
 
根据自己所用的电脑的操作系统,选择相应的版本下载:windows用户点击窗户图标,Mac用户点击苹果图标,Linux用户点击小企鹅。
 
下载好安装包后,按照提示进行安装。
 
 
 
2. 导入绘图所需的扩展包
 
 
首先,导入绘图需要的扩展包,并重新命名为较短的单词(#后为该句注释)。
 
import numpy as np #导入python的数值计算扩展包numpy,并重命名为np
 
import matplotlib.pyplot as plt #导入Python的绘图扩展包matplotlib,并重新命名为plt
 
import pandas as pd #导入python的数据处理扩展包pandas,并重命名为pd,该包用于读写excel文件
 
 
 
3. 设置excel中的数据
 
 
气泡图共有4个维度的独立变量,分别为x,y,s和c,其中x代表横坐标,y代表纵坐标,s代表气泡面积,c代表气泡颜色。
 
绘图所需的4维数据信息,全部从excel表格中读取。四个维度在实际中均可单独配置,它们是相互独立的。
 
表1为xys三个变量的数据信息,蓝色横轴为气泡图的x轴数据,绿色纵轴为气泡图的y轴数据,中间灰白相间的数据(s)为气泡的大小。将包含表1的数据表格存放在程序所在文件夹下,命名为“data.xlsx”。
 
 
 
命名为“data.xlsx”数据表
 
表2为xyc三个变量的数据信息,蓝色横轴为气泡图的x轴数据,绿色纵轴为气泡图的y轴数据,中间灰白相间的数据(c)为气泡的颜色。将包含表2的数据表格存放在程序所在文件夹下,命名为“colors.xlsx”。
 
 
 
4. 读取Excel中的数据
 
 
从'data.xlsx'文件中读取气泡面积数据
 
data1=pd.read_excel('data.xlsx') #从excel文件中读取数据,并保存到data1变量中
 
x=data1.columns#获取数据表的列,作为x轴数据
 
x.tolist()#转化成Python列表,方便绘图
 
data2=data1.T#旋转方向,行变列,列变行
 
y_index=[]#声明一个空列表
 
for i in data2.columns: #循环访问列元素的每个索引
 
    y_index.append(i) #将列元素的索引加入列表
 
print(y_index) #打印列表查看数据
 
y= [[i for y_data inrange(len(x))] for i inrange(1,len(y_index)+1)] #从列表数据中生成y轴坐标矩阵
 
 
 
从'colors.xlsx'文件种读取颜色数据
 
 
colors1=pd.read_excel('colors.xlsx') #从colors excel文件中读取数据,保存到colors1变量中
 
colors2=colors1.T#转置表格,行变列,列变行
 
 
 
4. 绘图
 
 
y轴共有10个系列,所以循环10次绘制。使用上面计算出来的x,y,area和colors的值进行绘制,同时可以额外制定一个透明度参数alpha,alpha=1时为不透明,alpha=0时为全透明。
 
for i inrange(len(y_index)):#循环绘图,循环次数为excel表格中的数据行数
 
    plt.scatter(x, y[i], s=data2[i+1], c=colors2[i+1], alpha=0.5) #绘制图像,因为s和c的索引从1开始,所以用i+1索引
 
 
plt.show()#显示绘制的图像
 
 
 
 
 
 
编程零基础的小伙伴有没有看晕掉?
 
其实,把上述代码写到一个文件里,得到下面的程序文件,不想动脑筋,直接拷贝下面的代码就可以了。
 
import numpy as np #导入python的数值计算扩展包numpy,并重命名为np
 
import matplotlib.pyplot as plt #导入Python的绘图扩展包matplotlib,并重新命名为plt
 
import pandas as pd #导入python的数据处理扩展包pandas,并重命名为pd,该包用于读写excel文件
 
 
 
data1=pd.read_excel('data.xlsx')
 
data2=data1.T
 
x=data1.columns#获取数据表的列,作为x轴数据
 
x.tolist()#转化成Python列表,方便绘图
 
y_index=[]
 
for i in data2.columns:
 
    y_index.append(i)
 
y= [[i for y_data inrange(len(x))] for i inrange(1,len(y_index)+1)]
 
colors1=pd.read_excel('colors.xlsx')
 
colors2=colors1.T
 
 
 
for i inrange(len(y_index)):#循环绘图,循环次数为excel表格中的数据行数
 
    plt.scatter(x, y[i], s=data2[i+1], c=colors2[i+1], alpha=0.5)#绘制图像,因为s和c的索引从1开始,所以用i+1索引
 
plt.show()
 
 
 
 
 
 
福利大放送
 
如果还想给气泡图添加横纵坐标标签怎么办?如果还想加网格线背景怎么办?EMMA为大家贴心准备了格式代码。
 
终于可以摆脱丑丑的low办法——“插入文本框”,有没有很开心啊~~
 
 
1.加上网格线背景
 
想在气泡图上加入网格线背景,形成一种“串糖葫芦的效果”,在程序种只需要加入一句话:plt.grid(True)
 
将这句话加在plt.show()语句之前即可。
 
import numpy as np #导入python的数值计算扩展包numpy,并重命名为np
 
import matplotlib.pyplot as plt #导入Python的绘图扩展包matplotlib,并重新命名为plt
 
import pandas as pd #导入python的数据处理扩展包pandas,并重命名为pd,该包用于读写excel文件
 
 
 
data1=pd.read_excel('data.xlsx')
 
data2=data1.T
 
x=data1.columns#获取数据表的列,作为x轴数据
 
x.tolist()#转化成Python列表,方便绘图
 
y_index=[]
 
for i in data2.columns:
 
    y_index.append(i)
 
#print(y_index)
 
y= [[i for y_data inrange(len(x))] for i inrange(1,len(y_index)+1)]
 
colors1=pd.read_excel('colors.xlsx')
 
colors2=colors1.T
 
 
 
for i inrange(len(y_index)):#循环绘图,循环次数为excel表格中的数据行数
 
    plt.scatter(x, y[i], s=data2[i+1], c=colors2[i+1], alpha=0.5)#绘制图像,因为s和c的索引从1开始,所以用i+1索引
 
plt.grid(True)
 
plt.show()
 
 
 
2. 加入x,y轴刻度和图片标题
 
在原来的程序中,第22~24行加入三条语句实现信息说明,使用额外的'size'参数来指定文本的大小。
 
import numpy as np #导入python的数值计算扩展包numpy,并重命名为np
 
import matplotlib.pyplot as plt #导入Python的绘图扩展包matplotlib,并重新命名为plt
 
import pandas as pd #导入python的数据处理扩展包pandas,并重命名为pd,该包用于读写excel文件
 
data1=pd.read_excel('data.xlsx')
 
data2=data1.T
 
x=data1.columns#获取数据表的列,作为x轴数据
 
x.tolist()#转化成Python列表,方便绘图
 
y_index=[]
 
for i in data2.columns:
 
    y_index.append(i)
 
#print(y_index)
 
y= [[i for y_data inrange(len(x))] for i inrange(1,len(y_index)+1)]
 
colors1=pd.read_excel('colors.xlsx')
 
colors2=colors1.T
 
for i inrange(len(y_index)):#循环绘图,循环次数为excel表格中的数据行数
 
    plt.scatter(x, y[i], s=data2[i+1], c=colors2[i+1], alpha=0.5)#绘制图像,因为s和c的索引从1开始,所以用i+1索引
 
plt.grid(True)  
 
plt.xlabel('Series',size=14)
 
plt.ylabel('Type',size=14)
 
plt.title('A Python Scatter Demo',size=14)
 
plt.show()#显示图片
 
 
 
3. 修改x,y轴标签显示
 
增加第24行~29行对xy轴标度进行修改,同时将原程序的21~23行改用中文显示。
 
import numpy as np #导入python的数值计算扩展包numpy,并重命名为np
 
import matplotlib.pyplot as plt #导入Python的绘图扩展包matplotlib,并重新命名为plt
 
import pandas as pd #导入python的数据处理扩展包pandas,并重命名为pd,该包用于读写excel文件
 
 
 
data1=pd.read_excel('data.xlsx')
 
data2=data1.T
 
x=data1.columns#获取数据表的列,作为x轴数据
 
x.tolist()#转化成Python列表,方便绘图
 
y_index=[]
 
for i in data2.columns:
 
    y_index.append(i)
 
#print(y_index)
 
y= [[i for y_data inrange(len(x))] for i inrange(1,len(y_index)+1)]
 
colors1=pd.read_excel('colors.xlsx')
 
colors2=colors1.T
 
 
 
for i inrange(len(y_index)):#循环绘图,循环次数为excel表格中的数据行数
 
    plt.scatter(x, y[i], s=data2[i+1], c=colors2[i+1], alpha=0.5)#绘制图像,因为s和c的索引从1开始,所以用i+1索引
 
plt.grid(True)  
 
plt.xlabel('技术手段',size=14)
 
plt.ylabel('技术效果',size=14)
 
plt.title('XXX领域技术功效分析',size=14)
 
plt.xticks([1, 2, 3, 4, 5, 6, 7],['技术手段1', '技术手段2', '技术手段3',  '技术手段4', '技术手段5', '技术手段6', '技术手段7'])
 
plt.yticks([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],['技术效果1', '技术效果2', '技术效果3', '技术效果4', '技术效果5','技术效果6','技术效果7','技术效果8','技术效果9','技术效果10'],size=14)
 
plt.show()#显示图片
 
 
Python绘制技术功效图
 
另外,用windows的小伙伴,显示中文如果有问题,请在程序中import那两句之后,加入
 
plt.rc('font', family='SimHei', size=13) #指定字体文件为微软黑体
 
来解决中文显示乱码问题。
本文标签:

版权声明:本文:手把手教你如何利用Python绘制技术功效图的方法【附实战作图详解】 由重庆网站制作公司(www.seozol.cn)原创内容,如需要转载请注明原文网址:重庆网站建设公司http://www.seozol.cn/

 
喜欢看,就分享到:

围观: 9999次 | 责任编辑:重庆网站建设公司

推荐文章

热门文章

最新文章

回到顶部