栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Matplotlib学习(二)--设置图像格式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Matplotlib学习(二)--设置图像格式

设置坐标轴
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 50)
y1 = 2*x+1
y2 = x**2

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')

plt.xlim((-1,2))   #x轴取值范围
plt.ylim((-2,3))   #y轴取值范围
plt.xlabel('I am x')   #x轴label
plt.ylabel('I am y')   #y轴label

new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8, -1, 1.22, 3],
           [r'$really bad$', r'$bad$', r'$normal$', r'$good$', r'$really good$'])
#坐标轴的记号
#y轴的将对应点改成了英语记号, 使用$ $改变了字体,改为数学字体,使用了$后需要用转义空格才行
#使用alpha可以显示α

plt.show()


# 或者通过下面的参数对坐标轴进行设置
#gca = 'get current axis'
ax = plt.gca()  #坐标轴
ax.spines['right'].set_color('none') #spines 是figure的4个边框
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')  #用下面的坐标轴代替x轴
ax.yaxis.set_ticks_position('left')    #用左面的坐标轴代替y轴
ax.spines['bottom'].set_position(('data',0)) #将x轴绑定在y=0的位置
ax.spines['left'].set_position(('data',0))   #将y轴绑定在x=0的位置

#还可以用axes设置坐标轴,可以按照百分比来设置

plt.show()

figure 如下所示:


 

 legend 图例
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 50)
y1 = 2*x+1
y2 = x**2

plt.figure()

plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am x')
plt.ylabel('I am y')

new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8, -1, 1.22, 3],
           [r'$really bad$', r'$bad$', r'$normal$', r'$good$', r'$really good$'])

ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

l1, = plt.plot(x,y2, label='up') #label: 名字
l2, = plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--', label='down')
#loc: best、upper right  ……, handles:线,label:自定义名字
plt.legend(handles=[l1, l2], labels=['aaa','bbb'], loc='best')
#也可以只选择显示部分线的legend
plt.show()
若将线传入handles中,必须在定义时加逗号(l1, l2,)

 


 annotation 注解
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 50)
y = 2*x+1

plt.figure(num=1,figsize=(8,5))
plt.plot(x,y)

ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

x0 = 1
y0 = 2*x0+1
plt.scatter(x0, y0, s=50, color='b')#s为大小(size)
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)

#method 1 #######
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0, y0),xycoords='data',xytext=(+30, -30),
             textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
             #xycoords:text位置的基准,xytext:与基准之间的相对位置
             #textcoords:基于offset point 进行偏移
             #arrowprops:连接线的方向和样式

# method 2  #####
plt.text(-3.7, 3, r'$This is the some text. mu sigma_i alpha_t$',
         fontdict={'size':16,'color':'r'})
#前两个为位置 xy

plt.show()

结果如下图所示:


axis tick 坐标轴刻度

本节课内容是教你如何把坐标轴数值的label拿出来,再单独设置参数

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 50)
y = 0.1*x

plt.figure()
plt.plot(x,y, linewidth=10,zorder=-2) #zorder为高度
plt.ylim(-2,2)

ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

for label in ax.get_xticklabels() + ax.get_yticklabels():#拿出坐标轴数值的label
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='white',edgecolor='None', alpha=0.7))
    #label 的框框   alpha:透明度

plt.show()
视频中坐标轴的数值在线段上面,但是自己编程却被线段覆盖了,因为z轴的优先级问题,因此需要在plot中设置zorder为-2,使得线段在坐标轴下面

结果如下图所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号