[英]Matplotlib: Change color of individual grid lines
我现在只使用Python大约一个月,所以我很抱歉,如果有一些简单的解决方案我忽略了。
基本上我有一个有4个子图的图,左边的2显示纵向图,右边的图显示纵向图的某些点的散点图。 您可以使用按钮单击纵向图的不同点处的散点图,并且您当前所在纵向图的刻度标签将以蓝色突出显示。
着色某个刻度标签已经适用于此:
xlabels = []
labelcolors = []
for i, item in enumerate(mr.segmentlst):
if re.search('SFX|MC|MQ|MS|MKC', item):
xlabels.append(mr.segmentlst[i])
else:
xlabels.append('')
for i, item in enumerate(mr.segmentlst):
if re.search('SFX', item):
labelcolors.append('black')
else:
labelcolors.append('gray')
labelcolors[self.ind]='blue'
[t.set_color(i) for (i,t) in zip(labelcolors, ax1.xaxis.get_ticklabels())]
[t.set_color(i) for (i,t) in zip(labelcolors, ax2.xaxis.get_ticklabels())]
它只显示某些刻度标签并相应地改变它们的颜色(我不知道是否有另一个解决方案,它是我能找到的唯一一个)。 不介意mr.segmentlist,我目前已经硬编码使用另一种方法的属性,所以我可以轻松地在Spyder中测试它。
我还想在纵向图中更改当前突出显示的刻度标签的网格线颜色(只有xgridlines可见),是否有某种类似的方法可以做到这一点? 我现在在互联网上搜索了大约2个小时的解决方案,并没有找到任何有用的东西。
我认为可能会使用像ax1.get_xgridlines()
这样的东西,但我不知道如何将其转换为有用的列表。
谢谢,塔玛拉
因为上面的解决方案只适用于主要的网格线(因为get_gridlines()当前是硬编码的,只使用主要的网格线),这里你也可以通过调整get_gridlines()函数(从这里)来访问次网格线:
from matplotlib import cbook
def get_gridlines(ax, which):
'''
Parameters:
ax : ax.xaxis or ax.yaxis instance
which : 'major' or 'minor'
Returns:
The grid lines as a list of Line2D instance
'''
if which == 'major':
ticks = ax.get_major_ticks()
if which == 'minor':
ticks = ax.get_minor_ticks()
return cbook.silent_list('Line2D gridline',
[tick.gridline for tick in ticks])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.