一、线形图
plot
1.单个线形图
import matplotlib.pyplot as plt #导入matplotlib库
import numpy as np #导入numpy库
x=np.arange(1,31,4)
y=x**3
print(x) #[ 1 5 9 13 17 21 25 29]
print(y) #[ 1 125 729 2197 4913 9261 15625 24389]
plt.plot(x,y,'b-*',label='x**3')
#这个b是把图表的线变成蓝色,两个横线是变成虚线,一个横线是直线,
# *是用来标记取得点的,
plt.legend(loc='best') #loc就是图例项的位置,best为最合适的位置
plt.title('my first one') #给图表加标题
plt.xlabel('X') #给图表加横坐标,也可以用中文,但需要设置格式,否则会乱码
plt.ylabel('Y') #给图表加纵坐标,也可以用中文,但需要设置格式,否则会乱码
plt.show()
也可以用创建单个线性图的方式去创建多条线在一个图中,但需要一个个设置条件,比较复杂
x=np.arange(1,31,4)
y=x**3
print(x)
print(y)
plt.plot(x,y,'b-*',label='x**3')
plt.legend(loc='best')
y2=x**3.2
plt.plot(x,y2,'r-o',label='x**3.2')
plt.legend(loc='best')
plt.title('my first one')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
2. 多个线形图
subplots为创建一个组,一起编辑,更为方便
线 不重叠
fig,ax=plt.subplots(2,2)
ax[0,1].plot(x,y,'b--*',label='x**3')
ax[0,0].plot(x,y2,'r-o',label='x**3.2')
plt.show()
线 重叠
fig,bx=plt.subplots()
bx.plot(x,y,'b--*',label='x**3')
bx.plot(x,y2,'r-o',label='x**3.2')
bx.set(title='my first one',xlabel='X',ylabel='Y')
bx.legend(loc='upper center')
plt.show()
3.保存图片
fig.savefig('myfig.png)
保存在当前文件夹下
4.读取外部数据
pd.read()
import pandas as pd
df=pd.read_csv(r'C:\Users\18841430581\PycharmProjects\python练习\python练习.csv',index_col='月份') #也可以去掉r,把\改成/即可
print(df.head())
# 金额
月份
1 156456
2 115349
3 465846
4 448215
5 351568
m=df.index.values
n=df['金额'].values
fig,cx=plt.subplots()
plt.plot(m,n,'y-*',label='数据')
#设置文字格式
from pylab import mpl
mpl.rcParams['font.sans-serif']=['FangSong'] #设置文字默认格式
cx.set(title='月收入',xlabel='月份',ylabel='金额')
#标题为中文时,会乱码,需要设置文字格式
cx.legend(loc='best')
plt.show()
二、饼图
pie
fig,dx=plt.subplots()
dx.pie(m[:4],lables=n[:4],explode=[0,0.03,0.06,0.09]
# m[:4]是只绘制前4个数据的饼图,如果要全部绘制,把方括号去了就可以,labels
#同上也是写出各个项的名称,expolde是给出各个部分之间的间隔,不设置就是
#贴着绘制
plt.show()
三、词云图
绘制词云图要先获取数据
with open('python练习2.csv') as file:
words=file.read() #必须缩近
print(words)
# 666 阿卡丽 皎月 刀妹 卡萨丁 飞机 兰博 妖姬 沙皇 塞拉斯 鳄鱼
#盲僧 发条 辛德拉 机器人 萨米拉 卢锡安 小炮 EZ
from wordcloud import WordCloud
wordcloud=WordCloud(fonts_path='C:/Windows/Fonts/simfang.ttf',
backgroud_color='yellow',width=600,
height=300,max_words=20).generate(words)
#要给出文字的路径,要不就乱码无法识别文字,backgroud及后边的是相关参数,
#分别为背景色、宽度、高度、最大单词数,这些可以设置也可以不设置
image=wordcloud.to_image()
image.show() #展示图片
当给定背景图时
from PIL import Image
images=Image.open('背景图.jpg')
maskImages=np.array(images)
wordcloud=WordCloud(fonts_path='C:/Windows/Fonts/simfang.ttf',
backgroud_color='yellow',width=600,
height=300,max_words=20,
mask=maskImages).generate(words)
image=wordcloud.to_image()
image.show()
利用jieba分词来绘制词云图
from wordcloud import WordCloud
import jieba
print(list(jieba.cut(欢迎来到英雄联盟!)))
#['欢迎', '来到', '英雄', '联盟', '!']
with open('练习.txt',encoding='utf-8') as file: #获取数据
text=file.read() #读取txt文件
print(text)
奉均衡之命。毫无疑问。绝不手软。标记已做好。哼,又是一个不自量力的。我强调最后
一遍,您一直念叨的经文,我这个忍镰大师根本听不懂。菜鸟真多 匹配系统找得到真正
的平衡么?我随影而来,随影而去。动作要轻。保持警惕。不要错失良机。均衡,存乎万
物之间。
wordlist_jieba=jieba.cut(text)
wordlist='/'.join(wordlist_jieba)
# '/'.join 就是把括号中的内容转换成字符串
print(wordlist)
#奉/均衡/之命/。/毫无疑问/。/绝不/手软/。/标记/已/做好/。/哼/,/又/是/一个/不
自量力/的/。/我/强调/最后/一遍/,/您/一直/念叨/的/经文/,/我/这个/忍镰/大师/
根本/听不懂/。/菜鸟/真/多/ /匹配/系统/找/得到/真正/的/平衡/么/?/我/随影/而/
来/,/随影/而/去/。/动作/要轻/。/保持警惕/。/不要/错失良机/。/均衡/,/存乎/万
物/之间/。
wordcloud=WordCloud(font_path='C:/Windows/Fonts/simfang.ttf').generate(wordlist)
image2=wordcloud.to_image()
image2.show()