数学建模--Python绘图

目录

1.绘制散点图

  1.1.绘制过程解释

  1.2.绘制图像代码 

  1.3.绘制图像展示

 2.绘制折线统计图

  2.1.绘制过程解释

   2.2.绘制图像代码 

  2.3.绘制图像展示 

 3.绘制柱形图

  3.1.绘制图像解释

     3.2.绘制图像代码

   3.3.绘制图像展示 

 4.多种图形的综合绘制

   4.1.绘制图像解释

  4.2.绘制图像代码 

  4.3.绘制图像展示 

  5.源代码汇总展


1.绘制散点图

  1.1.绘制过程解释

1.首先给定10个数据并用x与y相表示。
2.调用scatter函数来进行散点图的绘制。
3.color表示颜色,marker表示线形,linewidths表示线宽。

  1.2.绘制图像代码 

#%%
#数学建模简单入手Python绘图
import matplotlib.pyplot as plt
#1.matplotlib和seaborn库的使用
#1.1.scatter函数绘制散点图
x=[1,2,3,4,5,6,7,8,9,10]
y=[5.1,4.5,9.2,1.3,7.8,3.4,4.5,6.8,7.0,1.2]
plt.scatter(x,y,color='r',marker='*',linewidths=8)

  1.3.绘制图像展示

 2.绘制折线统计图

  2.1.绘制过程解释

1.首先给定x的取值范围
2.再简单不加修饰绘制两个函数
3.改变图像的线形和颜色
4.对于坐标轴进行美化处理
5.改变坐标轴中3.14并且用Π来进行取代

   2.2.绘制图像代码 

#%%
#1.2.绘制折线统计图
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-2*np.pi,2*np.pi,256,endpoint=True)
first_fun=np.cos(x)+np.sin(x)
second_fun=np.sin(x)-np.cos(x)
first_fun=first_fun+np.random.rand(256)*0.4
second_fun=second_fun+np.random.rand(256)*0.4
#设置图像的分辨率为
plt.rcParams['figure.dpi'] = 100
#基础不加修改的绘制图片
plt.plot(x,first_fun)
plt.plot(x,second_fun)
#进阶改变线型和颜色的绘图
plt.plot(x,first_fun,'gs--',linewidth=0.6,markersize=3)
plt.plot(x,second_fun,color='b',linewidth=0.8,markersize=2)
#继续对坐标轴进行一个美化
x_min=x.min()
y_min=first_fun.min()
x_max=x.max()
y_max=first_fun.max()
dx=(x_max-x_min)*0.4
dy=(y_max-y_min)*0.4
plt.xlim(x_min-dx,x_max+dx)
plt.ylim(y_min-dy,y_max+dy)
plt.xticks([-np.pi*2,-np.pi*1.5,-np.pi,-np.pi*0.5,0,np.pi*0.5,np.pi,np.pi*1.5,np.pi*2])
plt.yticks([-1,-1.5,0,1,1.5])
#将3.14换成兀
plt.xticks([-np.pi*2,-np.pi*3/2,-np.pi, -np.pi/2, 0, np.pi/2, np.pi,np.pi*1.5,np.pi*2],[r'$-2\pi$',r'$-3/2\pi$',r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$',r'$3/2\pi$',r'$2\pi$'])
plt.yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])
plt.show()

  2.3.绘制图像展示 

 3.绘制柱形图

  3.1.绘制图像解释

1.首先建立一块能够绘制四张图片的幕布
2.然后进行第一张图片的绘制和信息的标注
3.然后进行第二张图片的绘制和信息的标注
4.然后进行第三张图片的绘制和信息的标注
5.然后进行第四张图片的绘制和信息的标注
6.最后再利用函数将其的变得紧凑合适

     3.2.绘制图像代码

#%%
#1.3.绘制柱形图
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
e_bins=10
x=np.random.randn(1000,3)
#设置分辨率
plt.rcParams['figure.dpi'] = 200 #分辨率
#设置多图像的图片位置
fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2)
#设置颜色和图标
#绘制第一张图1/4
colom0=['red','tan','lime']
ax0.hist(x,e_bins,density=True,histtype='bar',color=colom0,label=colom0)
ax0.legend(prop={'size': 10})#设置图列的大小为10
ax0.set_title('bars with legend')#设置图片标题名字
#绘制第二张图2/4
colom1=['Bob','Jack','Lucy']
ax1.hist(x,e_bins,density=True,histtype='bar',stacked=True,label=colom1)
ax1.legend(prop={'size':10})
ax1.set_title("stack bar")
#绘制第三张图3/4
colom2=['aaa','bbb','ccc']
ax2.hist(x,e_bins,histtype='step',stacked=True,fill=False,label=colom2)
ax2.legend(prop={'size':10})
ax2.set_title("unfilled stacked bar")
#绘制第四张图4/4
colom3=['figure1','figure2','figure3']
multi= [np.random.randn(n) for n in [10000, 5000, 2000]]
ax3.hist(multi, e_bins, histtype='bar',label=colom3)
ax3.legend(prop={'size':10})
ax3.set_title('different sample example')
#进行一下图片的调整
fig.tight_layout()
plt.show()

   3.3.绘制图像展示 

 4.多种图形的综合绘制

   4.1.绘制图像解释

1.建立一块能够同时绘制三张图大小的幕布
2.创建并且给定数据及其取值范围
3.绘制中心第一张散点图
4.绘制上方和右方的条形统计图
5.对于冲突的坐标给予隐藏
6.再次调整并且美化轴间的宽度

  4.2.绘制图像代码 

#%%
#1.4.多种图片的结合
#进行库文件的引用
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

#给定足够多的数据点
np.random.seed(19680801)

#给定随机的x与y的区间值
x = np.random.randn(1000)
y = np.random.randn(1000)

#创建绘图幕布
fig, ax = plt.subplots(figsize=(5.5, 5.5))

#中心散点图的绘制
ax.scatter(x, y,marker = 'o',alpha = 0.1,color = "y")
ax.set_aspect(1.)

#再创建新两张图片
divider = make_axes_locatable(ax)
#给定两张图片的宽高和位置
ax_histx = divider.append_axes("top", 1.2, pad=0.1, sharex=ax)
ax_histy = divider.append_axes("right", 1.2, pad=0.1, sharey=ax)

#隐藏上图的x坐标
ax_histx.xaxis.set_tick_params(labelbottom=False)
#隐藏下图的y坐标
ax_histy.yaxis.set_tick_params(labelleft=False)

#进行调整x的距离
binwidth = 0.25
xymax = max(np.max(np.abs(x)), np.max(np.abs(y)))
lim = (int(xymax/binwidth) + 1)*binwidth
#开始绘制图片
bins = np.arange(-lim, lim + binwidth, binwidth)
ax_histx.hist(x, bins=bins,alpha = 0.6,color = "b",rwidth = 0.8)
ax_histy.hist(y, bins=bins, orientation='horizontal',alpha = 0.6,color = "r",rwidth = 0.8)

#确定条形统计的xy区间范围
ax_histx.set_yticks([0, 50, 100])
ax_histy.set_xticks([0, 50, 100])

plt.show()

  4.3.绘制图像展示 

 5.源代码汇总展示

#%%
#数学建模简单入手Python绘图
import matplotlib.pyplot as plt
#1.matplotlib和seaborn库的使用
#1.1.scatter函数绘制散点图
x=[1,2,3,4,5,6,7,8,9,10]
y=[5.1,4.5,9.2,1.3,7.8,3.4,4.5,6.8,7.0,1.2]
plt.scatter(x,y,color='r',marker='*',linewidths=8)
#%%
#1.2.绘制折线统计图
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-2*np.pi,2*np.pi,256,endpoint=True)
first_fun=np.cos(x)+np.sin(x)
second_fun=np.sin(x)-np.cos(x)
first_fun=first_fun+np.random.rand(256)*0.4
second_fun=second_fun+np.random.rand(256)*0.4
#设置图像的分辨率为
plt.rcParams['figure.dpi'] = 100
#基础不加修改的绘制图片
plt.plot(x,first_fun)
plt.plot(x,second_fun)
#进阶改变线型和颜色的绘图
plt.plot(x,first_fun,'gs--',linewidth=0.6,markersize=3)
plt.plot(x,second_fun,color='b',linewidth=0.8,markersize=2)
#继续对坐标轴进行一个美化
x_min=x.min()
y_min=first_fun.min()
x_max=x.max()
y_max=first_fun.max()
dx=(x_max-x_min)*0.4
dy=(y_max-y_min)*0.4
plt.xlim(x_min-dx,x_max+dx)
plt.ylim(y_min-dy,y_max+dy)
plt.xticks([-np.pi*2,-np.pi*1.5,-np.pi,-np.pi*0.5,0,np.pi*0.5,np.pi,np.pi*1.5,np.pi*2])
plt.yticks([-1,-1.5,0,1,1.5])
#将3.14换成兀
plt.xticks([-np.pi*2,-np.pi*3/2,-np.pi, -np.pi/2, 0, np.pi/2, np.pi,np.pi*1.5,np.pi*2],[r'$-2\pi$',r'$-3/2\pi$',r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$',r'$3/2\pi$',r'$2\pi$'])
plt.yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])
plt.show()
#%%
#1.3.绘制柱形图
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
e_bins=10
x=np.random.randn(1000,3)
#设置分辨率
plt.rcParams['figure.dpi'] = 200 #分辨率
#设置多图像的图片位置
fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2)
#设置颜色和图标
#绘制第一张图1/4
colom0=['red','tan','lime']
ax0.hist(x,e_bins,density=True,histtype='bar',color=colom0,label=colom0)
ax0.legend(prop={'size': 10})#设置图列的大小为10
ax0.set_title('bars with legend')#设置图片标题名字
#绘制第二张图2/4
colom1=['Bob','Jack','Lucy']
ax1.hist(x,e_bins,density=True,histtype='bar',stacked=True,label=colom1)
ax1.legend(prop={'size':10})
ax1.set_title("stack bar")
#绘制第三张图3/4
colom2=['aaa','bbb','ccc']
ax2.hist(x,e_bins,histtype='step',stacked=True,fill=False,label=colom2)
ax2.legend(prop={'size':10})
ax2.set_title("unfilled stacked bar")
#绘制第四张图4/4
colom3=['figure1','figure2','figure3']
multi= [np.random.randn(n) for n in [10000, 5000, 2000]]
ax3.hist(multi, e_bins, histtype='bar',label=colom3)
ax3.legend(prop={'size':10})
ax3.set_title('different sample example')
#进行一下图片的调整
fig.tight_layout()
plt.show()
#%%
#绘制饼形条状统计图
import matplotlib.pyplot as plt
import numpy as np
#设置分辨率为200
plt.rcParams['figure.dpi'] = 200
#生成随机种子数据
np.random.seed(19680801)
jiaodu=np.linspace(0,2*np.pi,15,endpoint=False)
r=10*np.random.rand(15)
width=np.pi/4*np.random.rand(15)
colors = plt.cm.viridis(r/ 10.)

ax=plt.subplot(111,projection='polar')
ax.bar(jiaodu,r,width=width,bottom=0,color=colors,alpha=0.5)
plt.show()
#%%
#1.4.多种图片的结合
#进行库文件的引用
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

#给定足够多的数据点
np.random.seed(19680801)

#给定随机的x与y的区间值
x = np.random.randn(1000)
y = np.random.randn(1000)

#创建绘图幕布
fig, ax = plt.subplots(figsize=(5.5, 5.5))

#中心散点图的绘制
ax.scatter(x, y,marker = 'o',alpha = 0.1,color = "y")
ax.set_aspect(1.)

#再创建新两张图片
divider = make_axes_locatable(ax)
#给定两张图片的宽高和位置
ax_histx = divider.append_axes("top", 1.2, pad=0.1, sharex=ax)
ax_histy = divider.append_axes("right", 1.2, pad=0.1, sharey=ax)

#隐藏上图的x坐标
ax_histx.xaxis.set_tick_params(labelbottom=False)
#隐藏下图的y坐标
ax_histy.yaxis.set_tick_params(labelleft=False)

#进行调整x的距离
binwidth = 0.25
xymax = max(np.max(np.abs(x)), np.max(np.abs(y)))
lim = (int(xymax/binwidth) + 1)*binwidth
#开始绘制图片
bins = np.arange(-lim, lim + binwidth, binwidth)
ax_histx.hist(x, bins=bins,alpha = 0.6,color = "b",rwidth = 0.8)
ax_histy.hist(y, bins=bins, orientation='horizontal',alpha = 0.6,color = "r",rwidth = 0.8)

#确定条形统计的xy区间范围
ax_histx.set_yticks([0, 50, 100])
ax_histy.set_xticks([0, 50, 100])

plt.show()

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温柔济沧海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值