無論值多少錢,即使沒有for
循環來設置標籤顏色,您的代碼也能在我的系統上正常工作。只是作爲參考,這裏有一個獨立的例子試圖按照你貼本質到底是什麼:
import matplotlib.pyplot as plt
import numpy as np
# Generate some data
num = 200
x = np.linspace(501, 1200, num)
yellow_data, green_data = np.random.random((2,num))
green_data -= np.linspace(0, 3, yellow_data.size)
# Plot the yellow data
plt.fill_between(x, yellow_data, 0, color='yellow')
plt.yticks([0.0, 0.5, 1.0], color='yellow')
# Plot the green data
ax2 = plt.twinx()
ax2.plot(x, green_data, 'g-')
plt.yticks([-4, -3, -2, -1, 0, 1], color='green')
plt.show()
我的猜測是,你的問題主要是由混合了不同的對象引用過來。我猜你的代碼有點複雜,當你撥打plt.yticks
,ax2
不是當前軸。在調用yticks
之前,您可以通過明確調用sca(ax2)
(將當前軸設置爲ax2
)來驗證該想法,並查看是否改變了事情。
一般來說,最好堅持使用完全的matlab-ish狀態機界面或者OO界面,不要混合太多。 (就個人而言,我更喜歡只是堅持的OO接口。使用pyplot
建立圖形對象和show
,否則使用的軸的方法。對每一個他自己的,雖然)。
無論如何,與matplotlib> = 1.0,tick_params
函數使這個更方便一些。 (我還使用plt.subplots
這裏,這是隻有在> = 1.0,也是如此。)
import matplotlib.pyplot as plt
import numpy as np
# Generate some data
yellow_data, green_data = np.random.random((2,2000))
yellow_data += np.linspace(0, 3, yellow_data.size)
green_data -= np.linspace(0, 3, yellow_data.size)
# Plot the data
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(yellow_data, 'y-')
ax2.plot(green_data, 'g-')
# Change the axis colors...
ax1.tick_params(axis='y', labelcolor='yellow')
ax2.tick_params(axis='y', labelcolor='green')
plt.show()
等效代碼爲舊版本matplotlib會看起來更象這樣:
import matplotlib.pyplot as plt
import numpy as np
# Generate some data
yellow_data, green_data = np.random.random((2,2000))
yellow_data += np.linspace(0, 3, yellow_data.size)
green_data -= np.linspace(0, 3, yellow_data.size)
# Plot the data
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax2 = ax1.twinx()
ax1.plot(yellow_data, 'y-')
ax2.plot(green_data, 'g-')
# Change the axis colors...
for ax, color in zip([ax1, ax2], ['yellow', 'green']):
for label in ax.yaxis.get_ticklabels():
label.set_color(color)
plt.show()
我不太清楚你在做什麼......(你是指「雙重情節」,「雙胞胎」或「雙胞胎」,子情節或其他什麼東西?)你能舉一些例子嗎?代碼或問題的示例圖像和/或您期望發生的事情? –
對不清楚的描述。我把這個問題追溯到使用'twinx'並壓縮了問題描述。還添加了一個圖形。 – Boffin