暂无分类
暂无标签
发布于2020-10-24 17:20 阅读(403) 评论(0) 点赞(19) 收藏(1)
0
1
2
3
4
5
散点图用来表示两个变量间的关系
import numpy as np
import matplotlib.pyplot as plt
height=[160,170,175,186]
weight=[49,50,55,58]
plt.scatter(heigth,weight) #将x和y的数据变成列表,然后填到plt.scatter(x,y)中
plt.show()
#股票价格波动
open,close=np.loadtxt('0001.csv',delimiter=',',skiprows=1,usecols=(1,4),unpack=True)
change=close-open #change是一串列表
yesterday=change[:-1]
today=change[1:]
plt.scatter(yesterday,today) #这里获取了yesterday和today两串列表数据,然后填到散点图函数中
plt.show()
#调整散点图的特征
plt.scatter(yesterday,today,s=100) #调整散点图的点的大小:s表示面积
plt.scatter(yesterday,today,c='r') #调整散点图的颜色,c表示颜色
plt.scatter(yesterday,today,markers='<') #调整散点图点的形状,markers表示形状,默认是o,在matplotlib官网上搜索markers可以看所有可以使用的形状
plt.scatter(yesterday,today,alpha=1) #调整散点图的透明度,alpha表示透明度,1表示完全不透明
折线图可以用来观察数据随时间变化的情况
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-10,10,100) #从-10到10,等区间分成100份
y=x**2
plt.plot(x,y)
plt.show()
#画股票的时间序列
open,close=np.loadtxt('0001.csv',delimiter=',',converters={0:mdates.strpdate2num('%m%d%Y')},skiprows=1,usecols=(0,1,4),unpack=True)
plt.plot(date,open) #绘制出来的图形横坐标不是时间,而是浮点型的数字
plt.plot_date(date,open,linestyle='--',color='red',markers='o') #这里绘制出来的横坐标是以年月日来表示的,另外还要规定线型,否则将会绘制出散点图
plt.plot_date(date,close,linestyle='--',color='green',markers='<') #在同一张图上绘制open和close的变化趋势
plt.show()
用来表示不同类别的事物的多少
import numpy as np
import matplotlib.pyplot as plt
#------绘制单变量条形图------
n=5
y=[10,20,40,50,60]
index=np.arrage(n)
pl=plt.bar(left=index,height=y,color='red',width=0.5) #left表示横坐标从0到5,高度为y,颜色为红色,宽度为0.5
pl=plt.bar(left=0,bottow=index,width=y,color='red',height=0.5,orientation='horizontal') #left表示横坐标,bottow表示纵坐标,width表示宽度,颜色为红色,高度为0.5,方向为水平方向
plt.show()
#-------绘制多变量条形图-------
sales_BJ=[50,55,63,69]
sales_SH=[45,56,58,66]
#绘制并列式的条形图
plt.bar(left=index,height=sales_BJ,colors='red')
plt.bar(left=index+barwidth,height=sales_SH,colors='blue') #SH图:比BJ的横坐标多了一个条形的宽度
plt.show()
#绘制层叠式的图
plt.bar(left=index,height=sales_BJ,colors='red')
plt.bar(left=index,bottom=sales_BJ,height=sales_SH,colors='blue') #SH图:在BJ条形块的顶上继续绘制
plt.show()
直方图很像条形图,不同点在于直方图是由连续区间构成的,而条形图常常用来反映不同类别的事物的情况
import numpy as np
import matplotlib.pyplot as plt
#-------绘制单变量直方图-------
x=100+no.random.randon(2000) #x是2000个以100为均值的随机数据
plt.hist(x,bins=10,normed=True) #bins表示共有10个直方块,normed表示是否需要标准化数据
plt.show()
#-------绘制双变量直方图-------
x=np.random.randon(2000)+2
y=np.random.randon(2000)+3
plt.hist2d(x,y,bins=40) #用颜色深浅表示频率的大小
plt.show()
表示每类事物占总体的比例
import numpy as np
import matplotlib.pyplot as plt
labels='A','B','C','D'
fracs=[15,30,45,10]
explode=[0,0.05,0,0] #标签为B的饼块将会离开圆心0.05个距离单位
plt.axes(aspect=1) #绘制正圆
plt.pie(x=fracs,labels=labels,autopct='%.0f%%',explode=explode,shadow=True) #autopct表示数据将会精确到小数点后一位,expolde表示希望着重表示哪一块,shadow表示是否需要添加阴影显得更好看
plt.show()
用以显示数据的分散情况
上边缘,上四分位数,中位数,下四分位数,下边缘,异常值
import numpy as np
import matplotlib.pyplot as plt
#-------绘制单变量箱形图------------
data=np.random.normal(size=1000,loc=0,scale=1) #生成均值为0,标准差为1的1000个随机数
plt.boxplot(data,sym='o',width=0.5) #sy用于表示异常值的形状,width可以用来调整上边缘和下边缘
plt.show()
#-------绘制多变量箱形图------------
data=np.random.normal(size=(1000,4),loc=0,scale=1) #生成4组随机数,每组随机数的均值为0,标准差为1,个数为1000个
labels=['A','B','C','D']
plt.boxplot(data,labels=labels,sym='o',width=0.5) #sy用于表示异常值的形状,width可以用来调整上边缘和下边缘
plt.show()
八种内建的默认颜色缩写
b:blue
g:green
c:cyan(青色)
r:red
m:magenta(紫红色)
y:yellow
k:black
w:white
其他颜色表达方法
百度上搜索颜色代码,将颜色代码放到函数中,就可以自由选择多种颜色
import numpy as np
import matplotlib.pyplot as plt
y=np.arrange(1,5)
#------ 颜色表达---------
plt.plot(y,color='r')
#----- 其他颜色表达方法: 1. 灰度-------
plt.plot(y,color='0.5')
#------ 其他颜色表达方法: 2. 十六进制-------
plt.plot(y,color='FF00FF')
#------ 其他颜色表达方法: 3. 元组-------
plt.plot(y,color=(0,1,0.2,0.3))
import numpy as np
import matplotlib.pyplot as plt
y=np.arrange(1,5)
#------ 点的形状表达---------
plt.plot(y,'D')
plt.plot(y,markers='<') #写markers的时候,python会把点连接起来
#------ 线的形状表达-------
plt.plot(y,'--')
样式字符串:将颜色、点型和线型写成一个字符串
cx--:青色、点型为x、线型虚线
import numpy as np
import matplotlib.pyplot as plt
ply.plot(y,cx--)
ply.plot(y,kp-.)
ply.plot(y,b<-)
plt.show()
FiguerCanyas:生成画布
figure:图
axes:坐标轴
import numpy as np
import matplotlib.pyplot as plt
#------面向对象式绘图--------
x=np.arange(1,100)
# 使用plt.figure()创建对象
fig=plt.figure()
#fig.add_subplot用以生成示例,若改变参数,则能绘制多个子图。
#参数一:子图总行数;参数二:子图总列数;参数三:子图位置。
ax1=fig.add_subplot(221)
ax2=fig.add_subplot(222)
ax3=fig.add_subplot(223)
ax4=fig.add_subplot(224)
#在每个子图上绘图
ax1.plot(x,x)
ax2.plot(x,-x)
ax3.plot(x,log(x))
ax4.plot(x,x**2)
#------交互式绘图--------
x=np.arange(1,100)
plt.plot(x,x)
plt.subplot(121)
plt.plot(x,x**2)
plt.subplot(122)
import matplotlib.pyplot as plt
fig1=plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot([1,2,3],[3,2,1])
fig2=plt.figure()
ax2=fig2.add_subplot(111)
ax2.plot([1,2,3],[1,2,3])
#与子图subplot的区别在于生成了fig1、fig2,即创建了多个对象,生成了多个画布
网格可以让我们对点的坐标有更好的了解
import matplotlib.pyplot as plt
import nupmy as np
#-------面向对象式------
x=np.arrange(1,5)
ax=fig.add_subplot(111)
ax.plot(x,x*2) #这里写plt.plot()也一样
ax.grid(color='')
plt.show()
#------交互式------
y=np.arange(1,5)
plt.plot(y,y*2)
plt.grid(True) #打开网格
plt.grid() #关闭网格
plt.grid(color='red') #修改颜色
plt.grid(linewidth='2') #修改粗细
plt.grid(linestyle='--') #修改线型
import matplotlib.pyplot as plt
import numpy as np
#--------面向对象式-------
x=arange(1,12,2)
fig=plt.figure()
ax=fig.add_subplot(111)
#方法1(推荐使用,较为简单)
l,=plt.plot(x,x,label='Inline label')
ax.legend() #显示图例
plt.show()
#方法2
l,=plt.plot(x,x)
l.set_label('label via method') #设置图例
ax.legend() #显示图例
plt.show()
#方法3
l,=plot(x,x)
ax.legned(['ax legend'])
plt.show()
#------交互式------
x=np.arange(1,11,1)
plt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')
plt.legend(loc=1,ncol=) #loc表示图例摆放的位置;ncol表示图例分为几列
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(-10,11,1)
plt.plot(x,x*2)
plt.axis() #将会输出x轴和y轴的最小值和最大值
#方法1
plt.axis([-5,5,0,80]) #x轴范围改为[-5,5],y轴范围改为[0,80]
#方法2(可以至调整x轴或y轴)
plt.xlim([-11,11])
plt.ylim([0,70])
#方法3
plt.xlim(xmin=-5,xmax=8) #可以只指定xmin
import matplotlib.pyplot as plt
import numpy as np
#------面向对象式-----
x=np.arange(1,11,1)
plt.plot(x,x)
ax=plt.gca()
ax.locator_params(nbins=10) #将坐标轴刻度调为10
ax.locator_params('x',nbins=10) #将x轴刻度调为10
plt.show()
#----交互式-----
x=np.arange(1,11,1)
plt.plot(x,x) #创建对象
plt.gca() #调用函数
plt.locator_params('x',nbins=10) #将x轴刻度调为10
#------调整以时间为横坐标的坐标轴-----
import matplotlib as mpl
import datetime
fig=plt.figure() #创建对象
start=datetime.datetime(2015,1,1)
end=datetime.datetime(2016,1,1)
delta=datetime.timedelta(day=1) #时间间隔
dates=mpl.dates.drange(start,end,delta)
y=np.arange.rand(len(dates))
ax.plot_date(dates,y,linestyle='-',colors='b',markers='')
#转化格式
date_format=mpl.dates.DateFormatter('%Y-%M')
ax.xais.set_major_formatter(date_format)
#自动调整坐标轴刻度间的距离
fig.autofmt_xdate()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,10,1)
y1=x**2
y2=np.log(x)
#-----交互式-----
plt.plot(x,y1)
plt.twinx() #绘制双y轴图像
plt.plot(x,y2,'r')
#------面向对象式-----
fig=plt.figure() #创建对象
ax1=fig.add_subplot(111) #生成幕布
ax1.plot(x,y1) #绘制图像y1
ax1.set_ylabel('Y1') #设置y轴标签
ax2=ax1.twinx() #另外设置一条y轴
ax2.plot(x,y2,'r') #添加曲线y2
ax1.set_xlabel('compare y1 and y2')
plt.show()
ax1.plot(y1,x) #绘制图像y1
ax2=ax1.twiny() #设置双x轴图像
ax2.plot(y2,x,'r') #添加曲线y2
plt.show()
0
1
2
3
4
5
6
作者:我是天上的仙女
链接: https://www.pythonheidong.com/blog/article/608435/24a8323917659e860a15/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2019 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!