最後編輯(部分解決方案):繪製離散,波詭雲譎的2D matplotlib陰謀與對數着色
經過大量的修修補補,我已經能夠做到我想要的東西。由於它繪製了17,000多個單獨的條形圖,因此它並不是一個快速的代碼。
解決方案
X = np.array(xvals)
Y = np.array(yvals)
Z = np.array(zvals)
Y_bot = np.array(bottomvals)
fig = plt.figure()
ax = fig.add_subplot(111)
jet = plt.get_cmap('jet')
log_norm = colors.LogNorm()
for x,y,z,bot in zip(X,Y,Z,Y_bot):
log_z = np.log10(z)/np.log10(max(Z))
colour = jet(log_price)
ax.bar(x,y,bottom=bot, width=1, edgecolor='none',color=c_col)
a = np.vstack((Z,Z))
im = plt.imshow(a, aspect='auto', cmap=jet, origin='lower', norm=log_norm)
im.set_visible(False)
plt.colorbar(format='%.1f')
plt.axis([values])
plt.show()
這是能夠成功地構建我想要的情節,它會自動執行彩條和格式它適當爲好。
----開始原來的問題----
我試圖合併對數彩色地圖一系列堆疊的條形圖中matplotlib(Python 2.7版)。實質上,每個「堆棧」值都有一個輔助值,我將對數變換應用於顏色映射,然後將其用作顏色映射的一部分。
有其運行以創建情節兩個循環:
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
import matplotlib.colors as colors
import matplotlib.colorbar as cb
import matplotlib.ticker as tk
for i in range(1,x):
# get data for point i
for n, j in enumerate(data):
cval = log10(secondary value)
plt.bar(i,j, bottom=sum(j[:n]), color=cm.jet(cval)
# Once it has all been plotted I want to set axis, titles and set up a color bar
# To set up the color bar I'm currently using
im = plt.imshow(a, aspect='auto',cmap=jet, origin='lower')
im.set_visible(False)
cbar = plt.colorbar()
現在,問題是,這些值日誌改變的值(這是正確的,因爲這是我一直在使用繪製什麼數據)。
但是,我想要執行反轉換(例如10 ** x),並將那些值顯示在彩條上。
cbar.ax.get_yticklabels() # This gets text values, not floats
cbar.ax.get_yticks() # This gets the positions
我知道我可以使用更新ticklabels:
cbar.ax.set_yticklabels(new_ticks)
不過,我想在某種程度上獲得蜱值的通用方法
到目前爲止,我已經嘗試使用做出改造。
返回的文本值的當前格式是:
Text(1,0,u'\u22121.6') # Corresponds to -1.6 in unicode (I think).
任何援助將不勝感激,這已經做我的頭
到底應該是這個樣子(。請注意,我手動調節這些刻度值,軸標籤已被刪除,因爲它們是不重要)
編輯:
我也創建了數據的hexbin圖,你可以看到它是非常非常塊狀,一般凌亂的工作。
爲了概括上述問題。
(符號,Z =元素,Z =矢量陣列等)
我有兩個獨特的索引(X,Y)數據陣Z。
我想繪製z的每個值在由其兩個索引(x,y)指定的位置。 z應該以對數着色。我還想讓一個彩色條與這個陰謀一起繪製。理想情況下,空間應填充,類似於第一個堆疊的條形圖。
注意,X是一個整數數組(儘管類型是float),範圍從1.0到48.0。 但是,Y是無約束的浮點數,並且沒有順序將每個值鏈接到X.因此,我不確定這裏的等值線圖是否適用。
您可能希望將您的解決方案置之不理,並將其作爲問題的答案發布。 – silvado
根據要求添加silvado。 –