Tuyên bố miễn trừ trách nhiệm:
- Tôi thường không lập trình bằng Python trừ khi tôi phải sửa mã của người khác
- Tôi chưa bao giờ sử dụng Matplotlib - đây là nỗ lực đầu tiên của tôi khi sử dụng nó và vì nó trông thú vị, lý do DUY NHẤT tôi đăng câu trả lời này.
Bây giờ một câu trả lời mạnh mẽ hơn: (Không phải tôi thích làm bài tập về nhà cho các ứng cử viên tiến sĩ ...)
Tất cả mọi thứ ở đây đã bị đánh cắp - không bị đánh cắp - từ trang web matplotlib (xem ví dụ) và từ Stack Overflow (matplotlib lưu hình ảnh cắt tỉa). Tất cả tôi đã làm là sao chép / dán nó và kiểm tra nó.
Tệp out.svg kết quả có thể được mở trực tiếp trong Inkscape. Hình ảnh là một Nhóm / Nhóm hình ảnh nhỏ hơn. Nhấp vào bất kỳ phần nào của hình ảnh, sau đó sử dụng tùy chọn 'Ungroup' của Inkscape. Bạn có thể phải hủy nhóm một vài lần để có thể thao tác trực tiếp một phần của hình ảnh.
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
#plt.show()
fig.set_size_inches(4,3)
fig.set_dpi(40)
fig.savefig('out.svg', transparent=True, bbox_inches='tight', pad_inches=0)