我有一個3D散點圖,它的一個平面上繪製每個日期的2個點。我問過about how to draw a LINE between every pair of points,並收到了我很感謝的答案。我現在想要的是繪製一個BAR或RECTANGLE來連接點而不是一條線。在Python中的3D散點圖中的兩點之間繪製矩形或條形圖matplotlib
Here's此時情節看起來像什麼,但我希望它看起來有點像從3D bar demo from matplolib's docs的情節,除了條形「浮動」而不是固定在軸上。
我試過使用Axes3D.bar
(正如matplotlib頁面所述),但它希望我爲每個小節提供一個「高度」而不是兩個實際座標,並且該高度將固定在軸上。
這是代碼,任何幫助表示讚賞。
import matplotlib.pyplot
from mpl_toolkits.mplot3d import Axes3D
dates = [20020514, 20020515, 20020516, 20020517, 20020520]
highs = [1135, 1158, 1152, 1158, 1163]
lows = [1257, 1253, 1259, 1264, 1252]
upperLimits = [1125.0, 1125.0, 1093.75, 1125.0, 1125.0]
lowerLimits = [1250.0, 1250.0, 1156.25, 1250.0, 1250.0]
zaxisvalues0= [0, 0, 0, 0, 0]
zaxisvalues1= [1, 1, 1, 1, 1]
zaxisvalues2= [2, 2, 2, 2, 2]
fig = matplotlib.pyplot.figure()
ax = fig.add_subplot(111, projection = '3d')
ax.plot(dates, zaxisvalues1, lowerLimits, color = 'b')
ax.plot(dates, zaxisvalues2, upperLimits, color = 'r')
for i,j,k,h in zip(dates,zaxisvalues0,lows,highs):
ax.plot([i,i],[j,j],[k,h],color = 'g')
ax.scatter(dates, zaxisvalues0, highs, color = 'g', marker = "o")
ax.scatter(dates, zaxisvalues0, lows, color = 'y', marker = "^")
matplotlib.pyplot.show()
謝謝你的提示,但我不能得到它的工作。我嘗試用原始代碼替換Mark的for循環: ax.bar(dates,zaxisvalues2,highs) 但它是在錯誤的平面上繪製條形圖。我嘗試了zaxisvalue0和zaxisvalues1,我試着洗牌順序,但目前爲止沒有運氣。 – Zambi
也許這就是你要找的[hist3D example](http://matplotlib.sourceforge.net/examples/mplot3d/hist3d_demo.html)。然後,您可以使用zpos來設置框的最低邊緣(舉例來說,獲取hist3D示例並將_zpos = hist.flatten()_)的第16行更改。 – Alexis
至於錯誤的飛機問題,您可以使用參數zdir修復它,例如_ax.bar(日期,高位,zdir ='y',底部=高位,zs = 0,顏色='b')_ – Alexis