我正試圖在我的3D散點圖上獲得誤差條。我在這里看到了這個主題'Plotting columns of an list or array with scatter3D in python'然而我的是一個Z值的陣列和一個相應的誤差值陣列。
以下是代碼
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits import mplot3d
df = pd. read_csv(r'C:UsersrownDropboxThesis8. Pharm Method development 5 - IDR zoneExcel docs est.csv')
print (df)
#data (df)
fx = (0.5,1.5, 2, 6)
fy = (25,20.5,16)
z = [37.838.6142.2943.8
32.47 33.34 38.39 39.19[/span].
24.68 26.32 28.49 30.58 ]
x, y = np.meshgrid(fx, fy)
#error data] x, y = np.meshgrid(fx, fy)
zerror = [3.13.73.74.36
1.44 1.47 2.85 2.2
0.7 0.49 2.03 1.47]
#plot points]。
fig = plt.figure(figsize = (10,10)
ax = fig.gca(projection='3d')
surf=ax. scatter3D(x, y, z, c=z, cmap=" jet", s=200, edgecolors="black", linewidth=1, marker="^", antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=10)
ax.set_xlabel('測量區面積(mm2)')
ax.set_ylabel('距離緊湊(mm)')
ax.set_zlabel('IDR(μg/min/cm2)')
ax.set_title('布洛芬非平板')
ax.view_init(30, 300)
plt.rcParams["axes.edgecolor"] = "yellow""axes.lineewidth"] = 2。
#plot errorbars[/span
for i in np.range(0, len(fx))。
ax.plot([x[i], x[i]], [y[i], y[i]], [z[i] zerror[i], z[i]-zerror[i]], marker="_"/span>)
**資料框架值**
a a sd b b sd c c sd d d sd
0 37.80 3.10 38.61 3。 70 42.29 3.70 43.80 4.36
1 32.47 1.44 33.34 1。 47 38.39 2.85 39.19 2.20
2 24.68 0.70 26.32 0. 49 28.49 2.03 30.58 1.47
我得到一個3D散點圖,所有的點都在上面,但是沒有誤差條。
我得到的錯誤資訊是 "輸入運算元的尺寸超過了軸重映射所允許的尺寸"
。我非常感謝任何幫助,
非常感謝
。多謝
uj5u.com熱心網友回復:問題在于你的z和zerror變數的格式(在你的原始代碼中,你是用串列來包裝pandas操作的,所以你需要洗掉它們周圍的外括號[ ])。
一旦完成,我們就可以通過固定 xy 位置,以及從 z zerror、z-zerror 畫一條線來繪制線條。
下面的代碼段可以實作你想要的效果:
importmatplotlib.pyplot as plt
import numpy as np
# 將這些移到這里,以便在繪圖前設定這些值。
plt.rcParams["axes.edgecolor"] = "yellow" "axes.lineewidth"] = 2。
#data[/span
fx = (0.5,1.5, 2, 6)
fy = (25,20.5,16)
z = [[37.8, 38.61, 42.29, 43.8], # 注意這里的格式化!32.47, 33.34, 38.39, 39.19] 。
[24.68, 26.32, 28.49, 30.58]]
x, y = np.meshgrid(fx, fy)
#error data 3.1, 3.7, 3.7, 4.36], #注意這里的格式化!。
[1.44, 1.47, 2.85, 2.20] 。
[0.7, 0.49, 2.03, 1.47] ]
#plot points]。
fig = plt.figure(figsize = (10,10)
ax = fig.gca(projection='3d')
surf=ax. scatter3D(x, y, z, c=z, cmap=" jet", s=200, edgecolors="black", linewidth=1, marker="^", antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=10)
ax.set_xlabel('測量區面積(mm2)')
ax.set_ylabel('距離緊湊(mm)')
ax.set_zlabel('IDR(μg/min/cm2)')
ax.set_title('布洛芬非平板')
ax.view_init(30, 300)
#plot errorbars[/span]。
for i in np.range(0, len(fx)-1)。 # Lines were modified here!.
for xval, yval, zval, zerr in zip(x[i], y[i], z[i], zerror[i])。
ax.plot([xval, xval], [yval, yval], [zval zerr, zval-zerr], marker="_"/span>, color='k'/span>)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329076.html
標籤:
上一篇:為多個水平條共享Y軸范圍的問題

