在练习之前,需要掌握的知识:
numpy
Matplotlib
pandas(不要求)
如果不熟悉可以查看我关于这方面的博客~~~~
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#解决中文显示问题 手动设置
mpl.rcParams['font.sans-serif']=['FangSong']
#设置x,y轴的数值
x = np.linspace(0,10,6)
y = x**2
plt.xlabel("横轴:x").set_color('g')
plt.ylabel("纵轴:y=x^2").set_color('r')
plt.plot(x,y,'r--',linewidth=2)
#显示图示
plt.legend()
#显示图
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#解决中文显示问题 手动设置 仿宋体
mpl.rcParams['font.sans-serif'] = ['FangSong']
#设置x,y的值
x = np.arange(0,10,0.3)
y = x**2
plt.xlabel("横轴:x").set_color('g')
plt.ylabel("纵轴:y=x^2").set_color('r')
plt.xlim(0,10) #设置x轴的区间
plt.ylim(0,100) #设置y轴的区间
plt.xticks([0,2,4,6,8,10])
plt.yticks([0,20,40,60,80,100]
plt.plot(x,y,"b>-",linewidth=2)
#显示图示
plt.legend()
#显示图
plt.show()
import matplotlib.pyplot as plt
import numpy as np
#定义函数实现y = f(x) =cos(2πx)
def f(x):
return np.cos(2*np.pi*x)
a = np.arange(0.0,5.0,0.02)
plt.plot(a,f(a),'b--')
plt.xlabel("横轴:时间",fontproperties='Kaiti',fontsize=14,color='g')
plt.ylabel("纵轴:振幅",fontproperties='SimHei',fontsize=14,color='k')
plt.title("正玄波实例 y = cos(2πx)",fontproperties='SimHei',fontsize=18,color='k')
plt.annotate(r'$\mu=100$',xy=(2,1),fontproperties='SimHei',fontsize=12,color='red')
plt.grid(True)
plt.axis([-1,6,-2,2])
pkt.show()
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3,3)
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])
plt.show()
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
gs = gridspec.GridSpec(2,2)
#防止画图时重叠
plt.subplots_adjust(hspace=1)
#绘图一
ax1 = plt.subplot(gs[0,0])
x = np.arange(0,10,0.3)
y = x*x
plt.xlabel("横轴:x").set_color('g')
plt.ylabel("纵轴:y=x^2").set_color('r')
plt.plot(x,y,"b>-",linewidth=2)
#绘图二
ax2 = plt.subplot(gs[0,1])
def g(x):
return np.cos(2*np.pi*x)
a = np.arange(0,4,0.02)
plt.plot(a,g(a),'r--')
x = [0,2,4]
y = np.linspace(-1,1,3)
plt.xticks(x)
plt.yticks(y)
#绘图三
ax3 = plt.subplot(gs[1,:])
def f(x):
return np.cos(2*np.pi*x)
a = np.arange(0.0,5.0,0.02)
plt.plot(a,f(a),"b--")
plt.xlabel('横轴:时间',fontproperties='Kaiti',fontsize=14,color='g')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=14,color='k')
plt.title('正玄波实例 y=cos(2πx)',fontproperties='SimHei',fontsize=18,color='k')
plt.grid(True)
plt.axis([-1,6,-2,2])
plt.annotate(r'$\mu=100$',xy=(2,1),fontproperties='SimHei',fontsize=12,color='red')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(1,11)
y = np.sin(x)
plt.step(x,y,'r')
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
labels = ["A班","B班","C班","D班"]
sizes = [10,30,45,15]
#如果是要没有阴影部分就将 shadow = False
patch,text1,text2 = plt.pie(sizes,labels = labels,autopct='%1.1f%%',shadow=True,startangle=90)
plt.title("班级名称")
plt.axis('equal')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
labels = ["A班","B班","C班","D班"]
sizes = [10,30,45,15]
explode = (0,0,0.5,0)
#如果是要没有阴影部分就将 shadow = False
patch,text1,text2 = plt.pie(sizes,labels = labels,explode=explode,autopct='%1.1f%%',shadow=True,startangle=90)
plt.title("班级名称")
plt.axis('equal')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
xlab = ["A班","B班","C班","D班"]
list = [5,7,4,3]
x = range(len(list))
bar = plt.bar(left=x,height=list,width=0.8,color=['r','k','g','b'],alpha=0.8)
plt.ylim(0,7.5)
plt.xticks(x,xlab)
#因为网格线一直没有被覆盖 所以加了这一条语句
plt.style.use('ggplot')
plt.rc('axes',axisbelow=True)
plt.grid(ls='--')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
sizes = [38,40,45.4,38.9,33.34]
plt.barh(range(5),sizes,height=0.7,color='steelblue',alpha=0.8)
plt.yticks(range(5),['亚马逊','当当网','中国图书网','京东','天猫'])
plt.xlim(30,47)
plt.xlabel("价格")
plt.title("不同平台图书价格")
for x,y in enumerate(sizes):
plt.text(y+0.2,x-0.1,'%s' % y)
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
xlab = ['2014','2015','2016','2017']
list1 = [20,30,15,35]
list2 = [15,30,40,20]
x = range(len(list1))
bar1 = plt.bar(left=x, height=list1, width=0.45, alpha=0.8, color='red', label="一部门")
bar2 = plt.bar(left=x, height=list2, width=0.45, color='green', label="二部门", bottom=list1)
plt.ylim(0, 80)
plt.ylabel("数量")
plt.xticks(x, xlab)
plt.xlabel("年份")
plt.title("某某公司")
plt.legend()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.scatter(np.random.randn(1000), np.random.randn(1000), marker = '*')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.xlabel("横轴:X",color = "g")
plt.ylabel("纵轴:Y",color = "r")
plt.scatter(np.random.randn(1000), np.random.randn(1000), marker = 'o')
plt.title("散点图",color = "b")
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
ax = plt.subplot(111, projection='polar')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
N = 20
thera = np.linspace(0.0, 2 * np.pi, N, endpoint = False)
radis = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
ax = plt.subplot(111, projection = 'polar')
bars = ax.bar(thera, radis, width = width, bottom = 0.0)
for r, bar in zip(radis, bars):
bar.set_facecolor(plt.cm.viridis(r / 10.))
bar.set_alpha(0.5)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
n = 100
radis = 2 * np.random.rand(n)
theta = 2 * np.pi * np.random.rand(n)
area = 200 * radis**2
colors = theta
ax = plt.subplot(111, projection='polar')
axs = ax.scatter(theta, radis, c=colors, s=area, cmap='hsv', alpha=0.75)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(10)
y = 2*x+5
plt.plot(x,y,"o")
plt.xlim(1,10)
plt.ylim(5,25)
plt.yticks([5,10,15,20,25])
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.title("Matplotlib demo")
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(0,10,0.1)
ysin = np.sin(x)
ycos = np.cos(x)
plt.subplot(2,1,1)
#画图时增加子图间距 防止重叠
plt.subplots_adjust(hspace=0.5)
plt.xlim(0,10)
plt.ylim(-1.0,1.0)
plt.plot(x,ysin,"-")
plt.title("Sine")
plt.subplot(2,1,2)
plt.xlim(0,10)
plt.ylim(-1.0,1.0)
plt.plot(x,ycos,"-")
plt.title("Cosine")
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x1 = [5,7,8,10]
x2 = [6,9,11]
y = np.arange(16)
height1 = [12,0,16,6]
height2 = [6,14,7]
plt.bar(x1,height1)
plt.bar(x2,height2,color="g")
plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.title("Bar graph")
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.xlim(0,100)
plt.ylim(0,5)
data = [0,10,15,20,25,30,35,40,44,48,52,56,60,70,100]
plt.hist(data,bins=5,histtype='stepfilled',facecolor="b",alpha=0.75)
plt.title("histogram")
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
labels = [u'娱乐',u'汽车',u'房屋',u'食物']
colors = ['silver','orange','dimgrey','tan']
sizes = [5,20,41,34]
explode = [0.1,0.1,0.1,0.1]
d,ax = plt.subplots()
ax.pie(sizes,labels=labels,explode=explode,colors=colors,autopct='%1.0f%%',shadow=False,pctdistance=0.5,startangle=0,textprops={'fontsize':12,'color':'w'})
ax.axis('equal')
plt.title("实际支出摘要",color='dimgrey')
ax.legend(bbox_to_anchor=(0.1,-0.1),loc='lower left',frameon=False,ncol=4)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 11
#图一
plt.subplot(211)
#画图时增加子图间距 防止重叠
plt.subplots_adjust(hspace=1)
x = np.arange(0, 5,0.02)
y = np.cos(2*np.pi*x) * np.exp(-x)
plt.plot(x,y,"b-")
plt.xlim(-0.5,5) #设置x轴的区间
plt.ylim(-0.6,1.2) #设置y轴的区间
plt.xticks([0,1,2,3,4,5])
plt.yticks([-0.5,0.0,0.5,1.0])
plt.title("阻尼振动 vs 无阻尼振动") #设置x轴标签
plt.ylabel(r'$y=2\pi x/e^x$',fontproperties="SimHei",fontsize=10) #设置y轴标签
plt.title("阻尼振动 VS 无阻尼振动")
#图二:
plt.subplot(2,1,2)
a = np.arange(0.0,2.0,0.04)
plt.plot(a,np.cos(2*np.pi*a),'r.-')
plt.xlabel("时间(s)",fontproperties='SimHei',fontsize=10)
plt.ylabel(r'$y=2\pi x$',fontproperties='SimHei',fontsize=10)
plt.axis([0.00,2.00,-1.0,1.0])
plt.show()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
xlab = ['北京市', '上海市', '天津', '重庆市']
list = [12406, 13908, 8386, 9143]
x = range(len(list))
bar = plt.bar(left=x, height=list, width=0.8, color = 'g', alpha=0.8)
plt.ylim(0, 14500)
plt.xticks(x, xlab)
for x,y in enumerate(list):
plt.text(x , y,'%s' % y, ha='center', va= 'bottom',fontsize=11)
plt.title("GDP大比拼")
plt.legend()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family']='SimHei'
plt.rcParams['font.size']=14
# 直方图
mu = 100
sigma = 20
x = np.random.normal(mu,sigma,size=100) # 均值和标准差
plt.hist(x,bins=30,normed=1,color='g',histtype='stepfilled',alpha=0.75)
plt.ylim(0.000,0.035)
plt.title('直方图')
plt.show()
pip install jieba
pip insall wordcloud
爬取某学校网站近两年的新闻标题
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
# 打开文本
text = open('2019-2020新闻标题.txt').read()
# 中文分词
text = ' '.join(jieba.cut(text))
wc = WordCloud(font_path='C:/Windows/Fontsfangzhengsongke.ttf', width=1000, height=800, mode='RGBA',background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')