更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

作图详解 | 利用Python绘制技术功效图的方法

  • 发布:Emma序
  • 来源:专利分析可视化
  • 时间:2017-11-15 16:59

Python可以画的图很多,比如气泡图、玫瑰图等等,很多我们用Excel实现起来很麻烦的图表,用Python都可以轻松实现。

今天我们就来教大家用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”。

表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) #指定字体文件为微软黑体

来解决中文显示乱码问题。

本文内容转载自网络,本着分享与传播的原则,版权归原作者所有,如有侵权请联系我们进行删除!

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:干货|Python 的十大重要特性
下一篇:python开发web服务器——搭建简易网站

Python编程练习题二

Python编程练习题一

Python实现降雪效果

Python中dir()、help()的使用

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省