数学建模作图准备(Python-Matplotlib)Matplotlib

一、目录

二、模块说明

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、直方图

// 歇息一下,有空再写。


三、主要参考博客

参考1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值