mp.rcParams['font.sans-serif']=['SimHei']
mp.rcParams['axes.unicode_minus']=False
2、调用坐标轴和设置主图代码
# 坐标刻度定位器
mp.figure()
# 调用坐标轴
ax = mp.gca()
3、隐藏top:上,right:右坐标线代码
ax.spines['left'].set_position(('data',0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
4、设置最小刻度~最大刻度代码
#以下两段代码为y0~5控制范围,x为0~11控制范围,可以理解为主刻度
mp.xlim(0, 11)
mp.ylim(0,5)
5、设置最小刻度~最大刻度代码
#以下两段代码为y0~5控制范围,x为0~11控制范围,可以理解为主刻度
mp.xlim(0, 11)
mp.ylim(0,5)
6、设置x水平轴主刻度(6-1)~(6-2)分刻度代码
#6-1:设置主刻度,主刻度参数为2时,显示0,2,4....,如果为3呢?
ax.xaxis.set_major_locator(mp.MultipleLocator(3))
#6-2:这里设置的是x轴的分刻度,分刻度参数为0.3,0~3之间被分成10个小格。
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.3))
6、设置y竖直轴分刻度代码
#修改为设置y轴的分刻度代码
ax.yaxis.set_minor_locator(mp.MultipleLocator(0.5))
7、为x水平轴添加辅助的文字说明
mp.text(5, 0.3, '坐标定位-主标和次标的设置原理图', ha='center', size=12)
设计代码分析
import numpy as np
import matplotlib.pyplot as mp
mp.rcParams['font.sans-serif']=['SimHei']
mp.rcParams['axes.unicode_minus']=False
# 坐标刻度定位器
mp.figure()
#以下两段代码为y0~5控制范围,x为0~11控制范围,可以理解为主刻度
mp.xlim(0, 11)
mp.ylim(0,5)
#这里手动把y轴添加上0~5个主刻度,顺便加上文字标签
mp.yticks([0,1,2,3,4,5])
#mp.yticks(['一','二','三','四','五','六'],rotation=30)
# 调用坐标轴
ax = mp.gca()
# 只留底轴,其余颜色设置为透明
ax.spines['left'].set_position(('data',0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
# 设置主刻度,主刻度参数为2时,显示0,2,4....,如果为3呢?
ax.xaxis.set_major_locator(mp.MultipleLocator(3))
#这里设置的是x轴的分刻度,分刻度参数为0.3,0~3之间被分成10个小格。
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.3))
#修改为设置y轴的分刻度代码
ax.yaxis.set_minor_locator(mp.MultipleLocator(0.5))
mp.plot(np.arange(11), np.zeros(11), c='none')
# 加一个文字,(ha=为中心对齐)
mp.text(5, 0.3, '坐标定位-主标和次标的设置原理图', ha='center', size=12)
mp.title('学习设置刻度主标和辅标',fontsize=23)
mp.show()
代码扩展练习:
根据前面的代码内容,试卷把坐标添加上箭头吧,下面给出如果添加箭头的代码段
问题思考:
提交的图片中背景是有颜色的,这里是如何实现的呢?
请把对应的代码答案,留言区讨论一下吧!
pd中对坐标轴添加箭头,坐标轴箭头
1 导入模块设置axisartist轴艺术
2 主画板fig,把主画板添加到艺术画板,艺术画板命名ax
3 把这些艺术画板作为子区域添加到主画板fig中。
4 设计指定轴的样式为箭头
5 隐藏不需要的轴,完成基础工作。
import mpl_toolkits.axisartist as axisartist
#定义主画板
fig = mp.figure()
# 定义艺术画板名称为ax,添加子图参数中绑定主画板
ax = axisartist.Subplot(fig,111)
#主画板中添加艺术画板
fig.add_axes(ax)
#实现箭头坐标轴装饰,首先在定义调用坐标轴位置,然后确定轴线_类型,
箭头样式:空->,实-|>
箭头尺寸:size=1.5
ax.axis['bottom'].set_axisline_style('-|>',size=1.5)
ax.axis['left'].set_axisline_style('->',size=1.8)
#艺术画板中隐藏坐标轴
ax.axis["top"].set_visible(False)
ax.axis["right"].set_visible(False)
plt.show()
扩展练习效果图
实际案例:画三角形
import matplotlib.pyplot as mp
import mpl_toolkits.axisartist as axisartist
mp.rcParams['font.sans-serif'] = ['SimHei']
mp.rcParams['axes.unicode_minus'] = False
class Art_axis():
def axis_arrow():
# 定位主图容器,把主图容器包装成一个艺术子画板,在主图中调用艺术子画板
fig = mp.figure()
ax = axisartist.Subplot(fig, 111)
fig.add_axes(ax)
#实现箭头坐标轴装饰, 明确空箭头为 ->,实箭头为 -|>,大小为size
ax.axis['bottom'].set_axisline_style('-|>',size=1.5)
ax.axis['left'].set_axisline_style('->',size=1.8)
# 调用坐标轴
ax = mp.gca()
# 只留底轴,其余颜色设置为透明
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data', 0))
#隐藏右上坐标轴
ax.axis["top"].set_visible(False)
ax.axis["right"].set_visible(False)
return ax
def scale(ax):
#设置x轴的坐标范围
mp.xlim(0, 13)
# 设置主辅轴,主轴总长为5,单位长为1,最小间隔为0.5
mp.ylim(0,5)
ax.yaxis.set_major_locator(mp.MultipleLocator(1))
ax.yaxis.set_minor_locator(mp.MultipleLocator(0.1))
mp.title('学习绘制三角形在坐标系内',fontsize=18)
ax = axis_arrow()
scale(ax)
def plot():
#观察plot内的坐标和图中的坐标点位置,总结plot画三角形的技巧
mp.plot([1,3],[1,4],'k')
mp.plot([3, 8], [4, 1],'k:',lw=1.5)
mp.plot([1,8],[1,1],'k')
mp.annotate('A({},{})'.format(1, 1), xy=(1, 1), xytext=(0.3, 0.6),
fontsize=16)
mp.annotate('B({},{})'.format(3, 4), xy=(3, 4), xytext=(3.5, 4.1),
fontsize=16)
mp.annotate('C({},{})'.format(8, 1), xy=(8, 1), xytext=(8, 0.6),
fontsize=16)
plot()
mp.show()
Art_axis()
画三角形效果图
扩展思考:图中的背景颜色是哪行代码实现的呢?聪明的你找到答案后把代码留言交流区讨论一下吧!
确定坐标点:
- (a_x1,b_y1) A点坐标
- (b_x2,b_y2) B点坐标
- (c_x1,c_y1) C点坐标
import random
import matplotlib.pyplot as mp
import mpl_toolkits.axisartist as axisartist
mp.rcParams['font.sans-serif'] = ['SimHei']
mp.rcParams['axes.unicode_minus'] = False
class Art_axis():
def axis_arrow():
# 定位主图容器,把主图容器包装成一个艺术子画板,在主图中调用艺术子画板
fig = mp.figure(figsize=(6,5),dpi=80)
ax = axisartist.Subplot(fig, 111)
fig.add_axes(ax)
#实现箭头坐标轴装饰, 明确空箭头为 ->,实箭头为 -|>,大小为size
ax.axis['bottom'].set_axisline_style('-|>',size=1.5)
ax.axis['left'].set_axisline_style('->',size=1.8)
# 调用坐标轴
ax = mp.gca()
# 只留底轴,其余颜色设置为透明
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data', 0))
#隐藏右上坐标轴
ax.axis["top"].set_visible(False)
ax.axis["right"].set_visible(False)
return ax
def scale(ax):
#设置x轴的坐标范围
mp.xlim(0, 13)
# 设置主辅轴,主轴总长为5,单位长为1,最小间隔为0.5
mp.ylim(0,8)
ax.yaxis.set_major_locator(mp.MultipleLocator(1))
ax.yaxis.set_minor_locator(mp.MultipleLocator(0.1))
mp.title('学习绘制三角形在坐标系内',fontsize=18)
ax = axis_arrow()
scale(ax)
def plot():
a_x1= random.randint(1,10)
b_x2= random.randint(1,10)
b_y1= random.randint(4,6)
b_y2= random.randint(4,6)
c_x1= random.randint(6,12)
c_y1= random.randint(1, 6)
if a_x1==b_y1==c_x1:
a_x1 += 1
b_y1 +=2
c_x1 += 3
mp.plot([a_x1, b_x2], [b_y1, b_y2], 'k')
mp.plot([b_x2, c_x1], [b_y2, c_y1], 'k:', lw=1.5)
mp.plot([a_x1, c_x1], [b_y1, c_y1], 'k')
mp.annotate('A({},{})'.format(a_x1, b_y1), xy=(a_x1, b_y1), xytext=(a_x1, b_y1),
fontsize=16)
mp.annotate('B({},{})'.format(b_x2, b_y2), xy=(b_x2, b_y2), xytext=(b_x2, b_y2),
fontsize=16)
mp.annotate('C({},{})'.format(c_x1, c_y1), xy=(c_x1, c_y1), xytext=(c_x1, c_y1),
fontsize=16)
plot()
mp.show()
Art_axis()
效果图展示:
以上代码为类里面构造三角形三个顶点的代码函数,通过随机函数提供的定位好的坐标,来确定我们需要三角形的位置。
学后记:感悟如下
- 本次学习的内容是前一年中,没有完全清楚的部分,但是今天重新拿出来按照正确的学习方式学习,问题迎刃而解了,开心。
- 学习有的时候不是一次性可以完全搞清楚的,需要把问题搁置起来,继续我们能够理解和学会的内容,等到有了一些必要的积累后,重新回头看你曾经不会的东西,有一天你会恍然大悟。
- 学习过程中遇到的问题,学会处理将来都会变成你的财富,让我们随着学习变的越来越有经验吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)