matplotlib子图中的对数y轴刻度颜色不起作用

时间:2018-04-18 11:27:08

标签: matplotlib subplot logarithm yaxis

我正在使用子图绘制matplotlib中的函数(由于其他原因我必须使用子图),并且喜欢将y-scale设置为对数,同时将y-ticks设置为红色。

我使用了这段代码:

import matplotlib.pyplot as plt

x_data = np.arange(500.0, 900.0, 1.0)
def func(x):
    return a*(x/500.0)**(-b)

fig, ax = plt.subplots()
ax.plot(x_data, 10*func(x_data))
ax.set_yscale('log')
ax.tick_params('y', colors='r')
plt.show()

image using code above

虽然我特别将它设置为红色,但它的颜色为黑色。 但是,当我选择线性刻度时,刻度颜色为红色:

import matplotlib.pyplot as plt

x_data = np.arange(500.0, 900.0, 1.0)
def func(x):
    return a*(x/500.0)**(-b)

fig, ax = plt.subplots()
ax.plot(x_data, 10*func(x_data))
ax.set_yscale('linear')
ax.tick_params('y', colors='r')
plt.show()

image using code above

此外,当手动选择y轴范围时,第一个刻度为红色:

import matplotlib.pyplot as plt

x_data = np.arange(500.0, 900.0, 1.0)
def func(x):
    return a*(x/500.0)**(-b)

fig, ax = plt.subplots()
ax.plot(x_data, 10*func(x_data))
ax.set_yscale('linear')
ax.tick_params('y', colors='r')
plt.show()

image using code above

它与对数刻度有关,但我不知道如何解决它。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

您在第一个图表中看到的刻度线是次要刻度线,默认情况下ax.tick_params适用于主刻度线。

您可以使用ax.tick_params参数指定which=适用的刻度:

ax.tick_params('y', which="both", colors='r')