python学习part 6:通过numpy和matplotlib.pyplot作图
#普通曲线图
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5,5,50) #随机从-5到5之间的50个数
y1=x**3
y2=2*x+3
plt.plot(x,y1,label='y1=x**3')#label指对曲线图或函数图的一种表示,但需要加plt.length(),后面可见
plt.plot(x,y2,label='y2=2*x+3')
plt.xlabel('I am x')#xlable指x轴的标题
plt.ylabel('I am y')#ylable指y轴的标题
plt.title('Just do it')#大标题
plt.plot(x,y2,color='pink',linewidth=5,linestyle='--')#对线性图像进行修饰,color,linewidth,linestyle
plt.legend()#label可见
plt.show()#显示
#折线图
import matplotlib.pyplot as plt
import numpy as np
y1=[1,6,18,27,7,2]#指定几个点
x1=range(0,6)
x2=range(0,10)
y2=[0,17,5,40,30,55,75,15,50,26]
plt.plot(x2,y2,label='line1',color='g',marker='*',markerfacecolor='pink',markersize=10)#color指定颜色,marker是标志(常用 * , ^ , _ , + )
plt.plot(x1,y1,label='line2',color='r')
plt.xlabel('I am x')
plt.ylabel('I am y')
plt.title('Slight Line')
plt.legend()
plt.show()
#子图
t = np.linspace(-5, 5, 50) #numpy数组生成50个数字
s1 = np.sin(np.pi*t)#np.sin指调用sin函数,pi*t指一个常量
s2 = np.sin(np.pi*t)
plt.figure(1)
plt.subplot(211) #设置子图subplot()
plt.plot(t, s1)
plt.grid(color='r',linestyle='--',linewidth=1,alpha=1)#plt.grid指画格子
plt.subplot(212)
plt.plot(t, s1)
plt.grid(color='r',linestyle='--',linewidth=1,alpha=0.3)
plt.show()
#饼图
label='happy','outstanding','love','learning'#建造区域名称
sizes=[10,50,5,35]#设置区域比例
fig1,ax1=plt.subplots()#设置子图,一定需要两个变量进行分割
ax1.pie(sizes,labels=label,autopct='%1.0f%%',startangle=90)#这里是labels不是label,autopct是百分比,startangle是指初始角度
ax1.axis('equal')#相等的长宽比可以将饼图置位圆形
plt.show()
#散点图
x=np.random.random(30)#随机点
y=np.random.random(30)
colors=np.random.random(30)#随机颜色
area=(50*np.random.random(30))
plt.scatter(x,y)#必须有这句,为了使c=color
plt.show()
#条形统计图
y = [20, 30, 15, 35]
x = range(len(y))
"""
绘制条形图
width:长条形宽度默认值0.8
"""
rects = plt.bar(x, y, width=0.4 , label="1")
plt.xlabel("I'm X")
plt.ylabel("I'm Y")
plt.title("I'm title")
"""
设置x轴刻度显示值
参数一:中点坐标
参数二:显示值
"""
labels = ['One', 'Two', 'Three', 'Four'] # 横坐标刻度显示值
plt.xticks(x, labels)#label所在坐标
"""
给直方图添加数据标签
参数一:数字说明的横坐标
参数二:数字说明的纵坐标
参数三:数字显示
参数四:垂直对齐方式
参数五:水平对齐方式
"""
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2, height, str(height), ha="center", va="top")#va可以为top和bottom
plt.legend()
plt.show()
附上每种图形的效果图
1.曲线图
2.折线图
3.子图
4.饼图
5.散点图
6.条形图
其中条形图是我们常用的数据对比图
注意:两段条形图的x轴坐标与宽度是制作好条形对比图的关键
import matplotlib.pyplot as plt
import numpy as np
y1=[20, 30, 15, 35]
x1=[0.5,2,3.5,5]
y2=[10, 20, 15, 25]
x2=[1,2.5,4,5.5]
x3=[0.75,2.25,3.75,5.25]
rects1=plt.bar(x1,y1,width=0.5,label="1")
rects2=plt.bar(x2,y2,width=0.5,label='2')
plt.xlabel("I'm X")
plt.ylabel("I'm Y")
plt.title("IT")
labels = ['One','Two','Three','Four']
plt.xticks(x3,labels)
for rect in rects1:
height = rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2, height, str(height), ha="center", va="bottom")
for rect in rects2:
height = rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2, height, str(height), ha="center", va="bottom")
plt.legend()
plt.show()
Ending!