Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改matplotlib打印标签中单个字符的颜色_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python 更改matplotlib打印标签中单个字符的颜色

Python 更改matplotlib打印标签中单个字符的颜色,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,在python 3.4中使用matplotlib: 我想能够设置轴标签中单个字符的颜色 例如,条形图的x轴标签可能为['100'、'110'、'101'、'111'、…],我希望第一个值为红色,其他值为黑色 这是否可能,是否有某种方式可以格式化文本字符串,以便以这种方式读取它们?也许有一些手柄可以在SETxticklabels上抓取并修改 或者,除了matplotlib之外,还有其他库可以做到这一点吗 示例代码(了解我的习惯用法): 谢谢 我想这会涉及到一些工作。问题在于单个文本对象具有单一颜色

在python 3.4中使用matplotlib:

我想能够设置轴标签中单个字符的颜色

例如,条形图的x轴标签可能为['100'、'110'、'101'、'111'、…],我希望第一个值为红色,其他值为黑色

这是否可能,是否有某种方式可以格式化文本字符串,以便以这种方式读取它们?也许有一些手柄可以在SETxticklabels上抓取并修改

或者,除了matplotlib之外,还有其他库可以做到这一点吗

示例代码(了解我的习惯用法):


谢谢

我想这会涉及到一些工作。问题在于单个
文本
对象具有单一颜色。解决方法是将标签拆分为多个文本对象

首先,我们写标签的最后两个字符。要写第一个字符,我们需要知道要画的轴下有多远——这是通过使用变压器和


我想这需要做一点工作。问题在于单个
文本
对象具有单一颜色。解决方法是将标签拆分为多个文本对象

首先,我们写标签的最后两个字符。要写第一个字符,我们需要知道要画的轴下有多远——这是通过使用变压器和

rlabsC = ['100','110','101','111']
xs = [1,2,3,4]
ys = [0,.5,.25,.25]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(xs,ys)
ax.set_xticks([a+.5 for a in xs])
ax.set_xticklabels(rlabsC, fontsize=16, rotation='vertical')
rlabsC = ['100','110','101','111']
xs = [1,2,3,4]
ys = [0,.5,.25,.25]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(xs,ys)
ax.set_xticks([a+.5 for a in xs])

plt.tick_params('x', labelbottom='off')

text_kwargs = dict(rotation='vertical', fontsize=16, va='top', ha='center')
offset = -0.02

for x, label in zip(ax.xaxis.get_ticklocs(), rlabsC):
    first, rest = label[0], label[1:]

    # plot the second and third numbers
    text = ax.text(x, offset, rest, **text_kwargs)

    # determine how far below the axis to place the first number
    text.draw(ax.figure.canvas.get_renderer())
    ex = text.get_window_extent()
    tr = transforms.offset_copy(text._transform, y=-ex.height, units='dots')

    # plot the first number
    ax.text(x, offset, first, transform=tr, color='red', **text_kwargs)