【问题标题】:How do I format axis ticks to be a certain color based on sign?如何根据符号将轴刻度格式化为某种颜色?
【发布时间】:2017-01-11 18:02:05
【问题描述】:

我希望我的 y 轴刻度标签在刻度值为正时为绿色,在刻度值为负时为红色。

考虑以下系列和情节

np.random.seed([3,1415])
pd.Series(np.random.randn(100)).add(.1).cumsum().plot()

我需要[2, 4, 6, 8] 为绿色,[-2, -4, -6, -8] 为红色。

【问题讨论】:

  • 你想要的是this吗?
  • @MaxU 否,格式化整个轴。我想要具有不同颜色的单个刻度标签。至少我是这么解释的。

标签: python pandas matplotlib


【解决方案1】:

您可以通过使用轴的 ax.get_yticklabels() 和 ax.get_yticks() 方法来完成此操作...

import numpy as np
import pylab as plt
import pandas as pd
# figure data
np.random.seed([3,1415])
# create the plot
ax = plt.figure().gca()
ax.plot(pd.Series(np.random.randn(100)).add(.1).cumsum())
# change the y-axis label colors based on positive/negative
a = [ax.get_yticklabels()[i].set_color('red')  if (ax.get_yticks()[i] < 0 ) else ax.get_yticklabels()[i].set_color('green') if ( ax.get_yticks()[i] > 0 ) else ax.get_yticklabels()[i].set_color('black') for i in range(len(ax.get_yticklabels()))]

上面使用列表推导[a if A else b if B else c for list]。

【讨论】:

  • 我今天的选票用完了......你会在 5 个小时内得到一张。
猜你喜欢
  • 2019-11-13
  • 2019-12-20
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多