python - Matplotlib xticks 标签 : how to modify attributes value

标签 python matplotlib axis-labels

正在关注 this我知道我可以使用以下方法提取 xticks 标签和位置:

import matplotlib.pyplot as plt

plt.scatter(x_data, y_data)
locs, labels=plt.xticks()

新变量labelsmatplotlib.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 中更改:

here

我试着把它切成薄片:

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')

enter image description here

关于python - Matplotlib xticks 标签 : how to modify attributes value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55378853/

相关文章:

python - seaborn clustermap : set colorbar ticks

r - 如何在R ggplot中对齐文本轴标签

python - 仅在 x 轴上显示每个 <n> 日期(或按月分组)以减少 x 轴困惑

python - NLP算法到 'fill out'搜索词

Python aiomysql 在我的查询参数周围放置了一组引号

python - 找到从点到复杂曲线的最小距离

Python:锁定文件

python - 如何更改子图中线条的颜色?

python - 当将 matplotlib 与 ipython notebook plt.show() 函数一起使用时不起作用

python - 如何在 matplotlib 中将轴标签对齐到右侧或顶部?