Python培训
400-996-5531
今天我们就来教大家用Python画技术功效气泡图。
编程小白不要觉得看不懂代码就被吓退了,其实就是把代码拷进去,一键式粘贴,代码基本不用改,但是要注意Excel里面的数据设置和命名。下面就一起来具体看看吧。
1.安装开发环境
首先需要下载Python的操作软件Anaconda。
Anaconda的下载地址为:#/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”。
表1
表2为xyc三个变量的数据信息,蓝色横轴为气泡图的x轴数据,绿色纵轴为气泡图的y轴数据,中间灰白相间的数据(c)为气泡的颜色。将包含表2的数据表格存放在程序所在文件夹下,命名为“colors.xlsx”。
表2
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()#显示图片
另外,用windows的小伙伴,显示中文如果有问题,请在程序中import那两句之后,加入
plt.rc('font', family='SimHei', size=13) #指定字体文件为微软黑体
来解决中文显示乱码问题。
本文内容转载自网络,本着分享与传播的原则,版权归原作者所有,如有侵权请联系我们进行删除!
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved