在不改变rcParams全局字典的情况下设置轴线宽度
所以,看起来我们不能这样做(这样会报错,因为 axes
没有 set_linewidth
这个方法):
axes_style = {'linewidth':5}
axes_rect = [0.1, 0.1, 0.9, 0.9]
axes(axes_rect, **axes_style)
而是必须使用下面这个老办法:
rcParams['axes.linewidth'] = 5 # set the value globally
... # some code
rcdefaults() # restore [global] defaults
有没有简单或者干净的方法(比如可以单独设置 x
轴和 y
轴的参数等等)?
如果没有,为什么呢?
4 个回答
8
是的,有一种简单又干净的方法可以做到这一点。
在一个轴的实例中调用axhline和axvline,看起来是MPL文档推荐的做法。
无论如何,这种方法很简单,可以让你对坐标轴的外观进行精细的控制。
举个例子,这段代码会创建一个图表,并把x轴的颜色设置为绿色,同时把x轴的线宽从默认的“1”增加到“4”;y轴的颜色设置为红色,y轴的线宽从“1”增加到“8”。
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.axhline(linewidth=4, color="g") # inc. width of x-axis and color it green
ax1.axvline(linewidth=4, color="r") # inc. width of y-axis and color it red
PLT.show()
axhline和axvline函数还接受其他参数,这样你几乎可以随心所欲地调整美观,特别是~matplotlib.lines.Line2D的属性都可以作为有效的参数(比如说,'alpha'、'linestyle'、capstyle、joinstyle)。
21
这段代码是用来做某些操作的,但具体的功能和效果需要根据上下文来理解。代码块通常包含了一些编程语言的语法和结构,可能涉及到变量、函数、循环等基本概念。
如果你是编程小白,可以把代码想象成一系列的指令,就像是给计算机下达任务。每一行代码都有它的目的,可能是计算一个数字、显示一段文字,或者处理一些数据。
在学习编程时,理解这些代码的意义和作用是非常重要的。你可以尝试逐行分析,看看每一部分是如何工作的,慢慢就能掌握其中的逻辑了。
记住,编程就像学习一种新的语言,开始时可能会觉得难,但只要多练习,就会越来越熟练。
plt.setp(ax.spines.values(), linewidth=5)
102
- 这个回答不管用,评论里也有解释。我建议使用
spines
。 - 正如Czechnology在评论中提到的,考虑一下也改一下刻度。
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.set_title('Normal spine and ticks')
ax2.set_title('Adjusted spine and ticks')
# change each spine separately:
# ax.spines['right'].set_linewidth(0.5)
# change all spines
for axis in ['top','bottom','left','right']:
ax2.spines[axis].set_linewidth(4)
# increase tick width
ax2.tick_params(width=4)
plt.show()