最终实现的效果如图:
主要的步骤如下:
1.从.xlsx文件中读出制图所需要的的数据
2.使用matplotlib库绘图并保存
完整代码如下:
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 26 21:54:42 2020
@author: Milk
"""
#import pandas as pd
import matplotlib.pyplot as plt
import xlrd
'''下面两行决定中文字体的显示'''
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
'''从excel中读数据'''
path="E:\\WordExcel\\表格.xlsx"
file=xlrd.open_workbook(path)
data=file.sheet_by_name('Sheet1')
colornum=data.col_values(1) #横坐标,读Sheet1的第二列
colornum=list(map(int,colornum)) #从xlrd中读出的数据为浮点型,需要转为整型
wordsnum=data.col_values(2) #纵坐标
wordsnum=list(map(int,wordsnum))
Fre=data.col_values(3) #气泡大小
Fre=list(map(int,Fre))
Type=data.col_values(4) #决定气泡颜色的类序号
Type=list(map(int,Type))
'''绘图'''
color=['white','violet','orange','blue','red'] #plt.scatter()函数中依据此设定颜色
size=Fre #依据Fre决定气泡的大小
plt.scatter(colornum,wordsnum,color=[color[i] for i in Type],s=size,alpha=0.6)
plt.xlim(-10,800)
plt.ylim(-2000,700000)
plt.xlabel("颜色词数") #设置横坐标标题
plt.ylabel("总字数") #设置纵坐标标题
plt.show() #保存图片
plt.savefig('./colorfre.png') #显示图片
其中,excel表格中的数据大致长这个样子:
因为代码是根据D列的值显示气泡大小,所以对该列的数值需要根据需要合理地设置,既要考虑它是否真实地代表了数据间的相对性,也要看是否和生成的图片(即横纵坐标的值)契合,有时需要多试几次。