Tôi đang cố gắng tạo biểu đồ thanh 3D bằng Python sử dụng bar3d() trong Matplotlib.Python matplotlib -> Ô nhịp 3D -> điều chỉnh vị trí nhãn đánh dấu, thanh trong suốt
Tôi đã nhận được đến điểm nơi tôi có thể hiển thị biểu đồ của tôi trên màn hình sau khi đi qua nó một số dữ liệu, nhưng tôi bị mắc kẹt trên như sau:
- trục Hiển thị nhãn đúng (hiện bỏ sót cuối cùng (hoặc ban đầu?) đánh dấu nhãn)
- Hoặc làm cho các dấu trên mỗi trục (ví dụ như cho 'Mon') hoặc trỏ đến thanh màu xanh tương ứng của nó, hoặc vị trí nhãn đánh dấu giữa các dấu tick chính.
- Làm cho các thanh bán trong suốt.
Tôi đã thử qua các đối số khác nhau để các 'rìu' dụ, nhưng đã không nhận được bất cứ điều gì để làm việc bất chấp và nghi ngờ tôi đã hiểu lầm những gì để cung cấp cho nó với. Tôi sẽ rất biết ơn vì bất kỳ sự giúp đỡ nào về điều này.
Dưới đây là một mẫu mã tôi đang làm việc trên:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#from IPython.Shell import IPShellEmbed
#sh = IPShellEmbed()
data = np.array([
[0,1,0,2,0],
[0,3,0,2,0],
[6,1,1,7,0],
[0,5,0,2,9],
[0,1,0,4,0],
[9,1,3,4,2],
[0,0,2,1,3],
])
column_names = ['a','b','c','d','e']
row_names = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
fig = plt.figure()
ax = Axes3D(fig)
lx= len(data[0]) # Work out matrix dimensions
ly= len(data[:,0])
xpos = np.arange(0,lx,1) # Set up a mesh of positions
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)
xpos = xpos.flatten() # Convert positions to 1D array
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color='b')
#sh()
ax.w_xaxis.set_ticklabels(column_names)
ax.w_yaxis.set_ticklabels(row_names)
ax.set_xlabel('Letter')
ax.set_ylabel('Day')
ax.set_zlabel('Occurrence')
plt.show()
Xin chào, cảm ơn đề xuất của bạn. Tôi đã cố gắng sử dụng các tham số alpha, nhưng nhận được lỗi sau: 'File "matrix_to_3D_histogram.py", dòng 43, trong ax.bar3d (xpos, ypos, zpos, dx, dy, dz, color =' b ', alpha = 0.5) TypeError: bar3d() nhận đối số từ khóa không mong muốn' alpha'' –
Dman
Thật kỳ lạ, tôi hoàn toàn không gặp vấn đề gì và tôi chỉ sao chép mã của bạn và thay đổi dòng tôi đã nói với bạn. Bạn đang sử dụng phiên bản nào? Tôi đang sử dụng matplotlib 1.1.0. – carla
@Dan để kiểm tra phiên bản của loại matplotlib này: 'import matplotlib; print matplotlib .__ version__' – Hooked