正在关注 this我知道我可以使用以下方法提取 xticks 标签和位置:
import matplotlib.pyplot as plt
plt.scatter(x_data, y_data)
locs, labels=plt.xticks()
新变量labels
是 matplotlib.cbook.silent_list
, 哪个
不像普通列表。
有没有办法访问和修改 labels
的任何属性值?元素?
具体来说,我想知道我是否可以选择标签的一个子集(即切片 silent_list)并修改该子集的特定属性。
这是一个玩具示例:
import numpy as np
import matplotlib.pyplot as plt
x=np.array([1,2,3,4,5,6,7,8])
y=np.random.normal(0, 1, (8, 1))
plt.scatter(x, y)
locs, labels=plt.xticks()
例如,假设我想将 labels
的第一个和最后一个元素以外的所有元素的标签颜色更改为红色;如果我打开变量的元素之一,我可以看到有属性 _color
具有值(value) k
,我想在 r
中更改:
我试着把它切成薄片:
labels[1:-1]
但它返回:
Out[]: [Text(2,0,'2'), Text(4,0,'4'), Text(6,0,'6'), Text(8,0,'8')]
这就是我所能做到的。
我想不出一种方法来访问该属性并更改其值。
注意:我正在寻找访问这些属性和更改值的通用方法,我不关心具体更改标签颜色。这只是一个例子。
最佳答案
您可能对替代解决方案感兴趣,您可以在其中选择要为哪些特定刻度着色。在这里,我必须从 [1:-1]
开始循环,因为第一个和最后一个刻度没有出现在此处的图表上,但它们出现在 labels
import numpy as np; np.random.seed(134)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x=np.array([1,2,3,4,5,6,7,8])
y=np.random.normal(0, 1, (8, 1))
plt.scatter(x, y)
fig.canvas.draw()
xticks = ax.get_xticklabels()
target_ticks = [1, 3, 6, len(xticks)-2]
for i, lab in enumerate(xticks[1:-1]):
if i+1 in target_ticks:
lab.set_color('r')
关于python - Matplotlib xticks 标签 : how to modify attributes value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55378853/