-
matplotlib 修改坐标轴刻度值,刻度个数
2019-03-15 16:36:461.刻度定位器与格式(Tick Locator) Tick locating 与 Tick formatting ...Matplotlib 中的 ticker 模块用于支持坐标轴刻度的修改,调用下列命令可以初步查看主副坐标轴刻度的数值定位方式(locator)与具体格式(for...1.刻度定位器与格式(Tick Locator)
Tick locating 与 Tick formatting 可参考官方文档:http://matplotlib.org/api/ticker_api.html
2.获取坐标轴刻度对象
- Matplotlib 中的 ticker 模块用于支持坐标轴刻度的修改,调用下列命令可以初步查看主副坐标轴刻度的数值定位方式(locator)与具体格式(formatter)等。
- 详细命令参考:http://matplotlib.org/api/axis_api.html
ax.xaxis.get_major_ticks() ax.xaxis.get_minor_ticks() ax.xaxis.get_major_locator() ax.xaxis.get_minor_locator() ax.xaxis.get_major_formatter() ax.xaxis.get_minor_formatter()
3.设置主副刻度对象属性
- (1)设置主副刻度格式
import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter t = np.arange(0.0, 100.0, 1) s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01) ax = plt.subplot(111) #注意:一般都在ax中设置,不再plot中设置 plt.plot(t,s,'--r*') #修改主刻度 xmajorLocator = MultipleLocator(20) #将x主刻度标签设置为20的倍数 xmajorFormatter = FormatStrFormatter('%5.1f') #设置x轴标签文本的格式 ymajorLocator = MultipleLocator(0.5) #将y轴主刻度标签设置为0.5的倍数 ymajorFormatter = FormatStrFormatter('%1.1f') #设置y轴标签文本的格式 #设置主刻度标签的位置,标签文本的格式 ax.xaxis.set_major_locator(xmajorLocator) ax.xaxis.set_major_formatter(xmajorFormatter) ax.yaxis.set_major_locator(ymajorLocator) ax.yaxis.set_major_formatter(ymajorFormatter) #修改次刻度 xminorLocator = MultipleLocator(5) #将x轴次刻度标签设置为5的倍数 yminorLocator = MultipleLocator(0.1) #将此y轴次刻度标签设置为0.1的倍数 #设置次刻度标签的位置,没有标签文本格式 ax.xaxis.set_minor_locator(xminorLocator) ax.yaxis.set_minor_locator(yminorLocator) #打开网格 ax.xaxis.grid(True, which='major') #x坐标轴的网格使用主刻度 ax.yaxis.grid(True, which='minor') #y坐标轴的网格使用次刻度 plt.show()
- (2)删除坐标轴的刻度显示
ax.yaxis.set_major_locator(plt.NullLocator()) ax.xaxis.set_major_formatter(plt.NullFormatter())
作者:开码牛
来源:CSDN
原文:https://blog.csdn.net/helunqu2017/article/details/78736661
版权声明:本文为博主原创文章,转载请附上博文链接! -
Matplotlib中修改坐标轴刻度线的属性
2019-09-24 16:01:44在matplotlib中,刻度线叫tick,刻度值叫tick_label 注意这幅图片中就包含了关于刻度线的一些信息。比方,不仅有主刻度线(Major tick),还有次刻度线(Minor tick)。并且我们看到刻度线都是朝着图的外侧。图中,上边...在matplotlib中,刻度线叫
tick
,刻度值叫tick_label
注意这幅图片中就包含了关于刻度线的一些信息。比方,不仅有主刻度线(Major tick),还有次刻度线(Minor tick)。并且我们看到刻度线都是朝着图的外侧。图中,上边的和右边的坐标轴(Spine)并没有刻度线。是否显示次刻度线
在pylab中内置了两个函数
minorticks_on()
和minorticks_off()
用来确定是否显示次刻度线。
如下代码实现在左侧图中显示次刻度线,在右侧不显示次刻度线。在默认的情况下,不显示次刻度线。plt.subplot(121) plt.minorticks_on() plt.subplot(122) plt.minorticks_off() plt.show()
刻度线的朝向
一般而言,我们希望刻度线朝外分布,这样避免影响图中的曲线和说明。但是有时候刻度线朝内分布,可以让图之间更加紧凑。在pylab中,利用
tick_params
控制刻度线的朝向,是朝图里,图外,还是都有。下面代码产生的图从左往右,分别显示朝里,朝外,两边都有的情况。plt.subplot(131) plt.tick_params(direction='in') plt.subplot(132) plt.tick_params(direction="out") plt.subplot(133) plt.tick_params(direction='inout') plt.show()
选择修改主刻度线还是次刻度线
通过上面的例子可以看出,修改刻度线的主要函数就是tick_params。那么每次调用这个函数,是修改主刻度线、次刻度线,还是都改呢?这个由参数
which
控制。比方下面这段代码,分别让主刻度线朝里、次刻度线朝里、主次均朝里。最后一个图说明默认情况下,主次刻度线均朝外。plt.subplot(141) plt.minorticks_on() plt.tick_params(which='magor',direction='in') plt.subplot(142) plt.minorticks_on() plt.tick_params(which='minor',direction='in') plt.subplot(143) plt.minorticks_on() plt.tick_params(which='both',direction='in') plt.subplot(144) plt.minorticks_on() plt.text(0.5,0.5,'default') plt.show()
修改刻度线的长度和宽度
如上图,如果觉得刻度线太短,太细,不太显眼,我们可以修改其长短、粗细。依然使用函数
tick_params
,通过参数width
和length
控制。下面代码让左图的主刻度线粗一些,右图的次刻度线长一些。plt.subplot(121) plt.minorticks_on() plt.tick_params(which='major',width=4) plt.subplot(122) plt.minorticks_on() plt.tick_params(which='minor',length=10) plt.show()
在哪些轴上显示刻度线
我们来看怎么控制刻度线出现在哪些轴上。这里用参数
left
,right
,bottom,
top`来控制,下面代码画出的图片,依次显示上下左右轴上的刻度线。(自己实验的,默认左边和下边是开启的 )plt.subplot(1,4,1) plt.tick_params(top=True,bottom=False,left=False,right=False) plt.subplot(1,4,2) plt.tick_params(top=False,bottom=True,left=False,right=False) plt.subplot(1,4,3) plt.tick_params(top=False,bottom=False,left=True,right=False) plt.subplot(1,4,4) plt.tick_params(top=False,bottom=False,left=False,right=True) plt.show()
在哪些轴上显示刻度值
注意上面的图,刻度线分别出现在我们控制的坐标轴上,但是刻度值在默认情况下还是出现在左下两个轴上。这里仅说明如何让刻度值出现在相应刻度线的位置。比方,我们仅让上面的轴显示刻度线,也仅在该轴上显示刻度值,利用
labelbottom
,labeltop
,labelleft
,labelright
四个参数控制,代码和图如下所示。plt.tick_params(top=True,bottom=False,left=False,right=False) plt.tick_params(labeltop=True,labelleft=False,labelright=False,labelbottom=False)
-
python刻度间隔修改_如何在matplotlib中更改刻度间距?
2020-12-08 15:07:00ticklabels之间的间距仅由轴上的刻度之间的间距决定。因此,获得给定标签之间更多空间的唯一方法是使轴变大。为了确定标签不重叠所需的空间,可以找出最大的标签并将其长度乘以标签的数量。然后可以调整轴周围的边距...ticklabels之间的间距仅由轴上的刻度之间的间距决定。因此,获得给定标签之间更多空间的唯一方法是使轴变大。
为了确定标签不重叠所需的空间,可以找出最大的标签并将其长度乘以标签的数量。然后可以调整轴周围的边距,并将计算出的尺寸设置为新的图形尺寸。import numpy as np
import matplotlib.pyplot as plt
N = 150
data = np.linspace(0, N, N)
plt.plot(data)
plt.xticks(range(N)) # add loads of ticks
plt.grid()
plt.gca().margins(x=0)
plt.gcf().canvas.draw()
tl = plt.gca().get_xticklabels()
maxsize = max([t.get_window_extent().width for t in tl])
m = 0.2 # inch margin
s = maxsize/plt.gcf().dpi*N+2*m
margin = m/plt.gcf().get_size_inches()[0]
plt.gcf().subplots_adjust(left=margin, right=1.-margin)
plt.gcf().set_size_inches(s, plt.gcf().get_size_inches()[1])
plt.savefig(__file__+".png")
plt.show()
请注意,如果绘图窗口中显示的图形大于屏幕,则它将再次缩小,因此调整大小的图形仅在保存时以其新大小显示。或者,您可以选择将其合并到一些带有滚动条的窗口中,如以下问题所示:Scrollbar on Matplotlib showing page
-
python刻度间隔修改_更改网格间隔并在Matplotlib中指定刻度标签
2020-12-08 15:06:54我想:以5的间隔使用点网格每20个刻度盘上只能有一个主要刻度盘标签我想让滴答声超出情节范围。在这些网格中有“计数”我已经检查过潜在的重复项,比如here和here,但是我还没有弄清楚。这是我的密码。import ...我试着在网格化的图中绘制计数,但是我不知道该怎么做。我想:以5的间隔使用点网格
每20个刻度盘上只能有一个主要刻度盘标签
我想让滴答声超出情节范围。
在这些网格中有“计数”
我已经检查过潜在的重复项,比如here和here,但是我还没有弄清楚。
这是我的密码。import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
for key, value in sorted(data.items()):
x = value[0][2]
y = value[0][3]
count = value[0][4]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.annotate(count, xy = (x, y), size = 5)
# Overwrites and I only get the last data point
plt.close()
# Without this, I get "fail to allocate bitmap" error
plt.suptitle('Number of counts', fontsize = 12)
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.axes().set_aspect('equal')
plt.axis([0, 1000, 0, 1000])
# This gives an interval of 200
majorLocator = MultipleLocator(20)
majorFormatter = FormatStrFormatter('%d')
minorLocator = MultipleLocator(5)
# I want minor grid to be 5 and major grid to be 20
plt.grid()
filename = 'C:\Users\Owl\Desktop\Plot.png'
plt.savefig(filename, dpi = 150)
plt.close()
这就是我得到的。
我也有一个覆盖数据点的问题,我也有麻烦。。。有人能帮我解决这个问题吗?
-
matplotlib坐标轴刻度-【老鱼学matplotlib】
2017-12-11 09:50:00本节主要讲述如何对坐标轴的刻度字体大小以及背景色进行修改。 例如: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成x轴上的数据:从-3到3,总共有50个点 x = np.linspace(-3, 3,... -
python matplotlib绘图,修改坐标轴刻度为文字的实例
2020-12-24 22:18:44查询pyplot 文档, 发现了 xtick() 函数可以修改刻度。 代码如下: import matplotlib.pyplot as plt import numpy as np #val_ls = [np.random.randint(100) + i*20 for i in range(7)] scale_ls = range(7) ... -
python matplotlib绘图,修改坐标轴刻度为文字
2017-11-22 17:09:15工作中偶尔需要做客流分析,用pyplot 库绘图。...查询pyplot 文档, 发现了 xtick() 函数可以修改刻度。 代码如下: import matplotlib.pyplot as plt import numpy as np #val_ls = [np.random.r -
Notes_matplotlib_坐标轴刻度与修改默认设置
2020-02-24 20:26:37坐标轴刻度 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np plt.style.use('seaborn-whitegrid') %matplotlib inline fig=mpl.figure.Figure() ax=plt.axes() ax.plot(np.random.... -
Python matplotlib可视化分析(一)- 修改刻度 移动坐标轴
2020-06-04 20:49:36对Python matplotlib 的使用进行了总结,学习内容来自B站up主莫烦Python,推荐!!! 代码: import matplotlib.pyplot as plt import numpy as np # 最简单的画图 x = np.linspace(-1, 1, 50) y = 2*x + 1 plt... -
matplotlib 修改坐标轴,添加注释及公式
2018-09-15 09:55:48坐标轴刻度 import matplotlib.pyplot as plt import numpy as np x=np.arange(1,11,1) plt.plot(x,x) ax = plt.gca() #ax.locator_params(nbins=5) #xy轴同时调整 ax.locator_params('x',nbins=10) #只调整x轴 ... -
python坐标轴刻度改成字符_python matplotlib绘图,修改坐标轴刻度为文字的实例
2021-02-03 19:58:51工作中偶尔需要做客流分析,用pyplot 库...查询pyplot 文档, 发现了 xtick() 函数可以修改刻度。 代码如下: import matplotlib.pyplot as pltimport numpy as np#val_ls = [np.random.randint(100) + i*20 for ... -
python colorbar刻度_matplotlib画3D图修改X,Y,Z,colorbar的刻度值
2020-12-04 22:00:59修改X,Y,Z轴的刻度值from matplotlib.ticker import MultipleLocator,FuncFormatterfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltfrom matplotlib import cmfrom matplotlib import ...