首页 > 解决方案 > 如何解决 matplotlib 3.5 中的多个刺?

问题描述

这里的文档说我可以通过像这样传递一个列表来一次处理多个脊椎:

spines[['top','right']].set_visible(false)

我想设置我的脊椎的线宽,所以我写了

panel2.spines[["top","bottom"]].set_linewidth(0.72)

并得到一个 TypeError: unhashable type: 'list'。我不明白这个问题。

这是一个最小的工作示例

import matplotlib.pyplot as plt 
import matplotlib.patches as mplpatches
import numpy as np 

plt.figure( figsize=(1,1) )

panel1=plt.axes( [0.1,0.1,0.5,0.5] )
panel1.spines[["top","bottom"]].set_linewidth(2)

plt.show()

仅用“top”或“bottom”字符串替换列表的地方。

标签: pythonmatplotlib

解决方案


类似于@JohanC 的建议:

import matplotlib.pyplot as plt 
import matplotlib.patches as mplpatches
import numpy as np 

plt.figure( figsize=(1,1) )

panel1=plt.axes( [0.1,0.1,0.5,0.5] )
# Specify each side independently.
panel1.spines['top'].set_linewidth(2)
panel1.spines['bottom'].set_linewidth(2)

plt.show()

参考:
如何在 Python 中从 Matplotlib 图中删除框架


推荐阅读