一、目录
文章目录
- 一、目录
- 二、模块说明
- 1、建一个区域
- 2、建立四个区域
- 3、曲线图
- 4、散点图
- 5、条形图(竖向)
- 6、条形图(横向)
- 7、条形图(上下型)
- 8、并列条形图
- 9、饼状图
- 10、直方图
- 三、主要参考博客
二、模块说明
1、建一个区域
#新建画板
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111)
ax.set(xlabel='X-Axis',ylabel='Y-Axis',xlim=[0.5,8],ylim=[1,6],title='Example')
plt.show()
2、建立四个区域
#新建画板
import matplotlib.pyplot as plt
fig=plt.figure()
ax1=fig.add_subplot(221)
ax2=fig.add_subplot(222)
ax3=fig.add_subplot(223)
ax4=fig.add_subplot(224)
ax1.set(title='ax1')
ax2.set(title='ax2')
ax3.set(title='ax3')
ax4.set(title='ax4')
plt.show()
3、曲线图
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
'''
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的间隔内返回均匀间隔的数字。
返回num均匀分布的样本,在[start, stop]。
这个区间的端点可以任意的被排除在外。
'''
#做点
x=np.linspace(0,np.pi*6) # math.pi==scipy.pi==np.pi 都是圆周率π
y_sin=np.sin(x)
y_cos=np.cos(x)
#创建四个区域
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
ax1.set(title='one')
ax2.set(title='two')
ax3.set(title='three')
ax4.set(title='four')
fig.tight_layout()
#在图上描点
ax1.plot(x,y_sin) #plot()函数画出一系列的点,并且用线将它们连接起来。
ax2.plot(x,y_sin,color='red',marker='*',linewidth=2,markersize=9) #linewidth 是线宽;markersize 是点的大小;
ax3.plot(x,y_cos)
ax4.plot(x,y_cos,color='cyan',linestyle='dashed',linewidth=2,marker='+')
plt.show()
4、散点图
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
'''
arange 非常类似于range,
区别为:arange返回的是一个数据,而range返回的是list;
使用arange前先引入
例如 range(5): range返回从0到4的5个数构成的list
第一个参数是起始点,第二个参数是终止点,第三个参数就成了步长
np.arange()
函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是6,步长为1。
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数
'''
#注意:"x and y must be the same size"
x=np.arange(0,10,1) #十个(0,1)的点符合间距为1规则;
y=np.random.randn(10,1) #十个点符合正态分布,一维度;
plt.scatter(x,y,s=None, color='red',marker='o') #p是五边形
plt.show()
5、条形图(竖向)
import pyquery as pq
import matplotlib.pyplot as plt
#这两行代码解决中文显示的问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#设置横纵坐标
waters=('碳酸饮料','绿茶','矿泉水','果汁','其他')
buy_number=[6,7,6,1,2]
#绘制图形
plt.bar(waters,buy_number)
plt.title=('男性购买饮用水的调查结果')
plt.show()
6、条形图(横向)
import pyquery as pq
import matplotlib.pyplot as plt
#这两行代码解决中文显示的问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#设置横纵坐标
waters=('碳酸饮料','绿茶','矿泉水','果汁','其他')
buy_number=[6,7,6,1,2]
#绘制图形
plt.barh(waters,buy_number)
plt.title=('男性购买饮用水的调查结果')
plt.show()
7、条形图(上下型)
! ! ! 未完成 !!!
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
'''
random.seed() 会改变随机生成器的种子;
传入的数值用于指定随机数生成时所用算法开始时所选定的整数值,
如果使用相同的seed()值,则每次生成的随机数都相同;
如果不设置这个值,则系统会根据时间来自己选择这个值,此时每次生成的随机数会因时间的差异而有所不同。
'''
np.random.seed(1) #设置随机数种子;
x=np.arange(10)
y=np.random.randn(10)
ax1=
8、并列条形图
import pyquery as pq
import numpy as np
import matplotlib.pyplot as plt
#这两行代码解决中文显示的问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#设置横纵数据
waters=('碳酸饮料','绿茶','矿泉水','果汁','其他')
buy_number_male=[6,7,6,1,2]
buy_number_famale=[3,7,9,2,8]
#设置条形宽度
bar_width=0.3
#设置横坐标
index_male=np.arange(len(waters)) #男生横坐标
index_famale=index_male+bar_width #女生横坐标
#使用bar绘制条形图
plt.bar(index_male,buy_number_male,color='blue',width=bar_width,label='男生')
plt.bar(index_famale,buy_number_famale,color='red',width=bar_width,label='女生')
#xticks
'''
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x, calendar.month_name[1:13],color='blue',rotation=60)
#参数x空值X轴的间隔,第二个参数控制每个间隔显示的文本,后面两个参数控制标签的颜色和旋转角度
'''
plt.xticks(index_male+bar_width,waters,color='blue',rotation=30)
plt.xlabel('饮品')
plt.ylabel('购买量')
plt.title('调查报告')
plt.legend() #图例
plt.show()
注意:曲线用plot绘制;条形图用bar绘制
9、饼状图
import matplotlib.pyplot as plt
lables = ['Nokia', 'Samsung', 'Appe', 'Lumia']
values = [10, 30, 45, 15]
colors = ['yellow', 'green', 'red', 'blue']
plt.pie(values, labels=lables, colors=colors) #权重,标签,颜色
'''
matlab函数图象很多时候为了把x和y的信息都表达得充分明显,会使x轴单位的实际长度和y轴单位的实际长度不一样。
axis equal就是取消这种变化。把单位长度都变的一样。这样做的好处就是对于圆来说更像圆,
但是对于一些变化很微小的函数就不是很直观,例如y=0.00000001* sin(x)看起来就有点像一条直线了
'''
plt.axis('equal')
'''
1)参数:explode
意义:分离饼状图,突出强调某一部分;
默认:None;
调用:explode=[0, 0, 0.2, 0]
2)参数:labels
意义:给各个部分添加标签;
默认:None;
调用:labels=[‘A’, ‘B’, ‘C’, ‘D’]
3)参数:labeldistance
意义:标签距离饼状图的距离;
默认:1.1;
调用:labeldistance = float(实数)
4)参数:colors
意义:设置每一部分的颜色;
默认:自动填充;
调用:colors=[‘red’, ‘gray’, ‘yellow’, ‘blue’]
注意:颜色个数同于数据的个数
5)参数:autopct
意义:显示各部分比例;
默认:None;
调用:autopct=’%1.2f%%’
6)参数:shadow
意义:阴影,增加立体感;
默认:False;
调用:shadow=True
'''
plt.show()
10、直方图
// 歇息一下,有空再写。