Penafian:
- Saya biasanya tidak memprogram dalam Python kecuali saya harus memperbaiki kode orang lain
- Saya tidak pernah menggunakan Matplotlib - ini adalah upaya pertama saya menggunakannya dan, karena terlihat menarik, HANYA alasan saya memposting jawaban ini.
Sekarang jawaban yang lebih kuat: (Bukannya saya menikmati mengerjakan pekerjaan rumah untuk kandidat PhD ...)
Semua yang ada di sini dicuri - dicuri habis-habisan - dari situs web matplotlib (lihat Contoh) dan dari Stack Overflow (matplotlib save ara trim gambar). Yang saya lakukan hanyalah menyalin / menempel dan mengujinya.
File out.svg yang dihasilkan dapat dibuka langsung di Inkscape. Gambar adalah Grup / Grup gambar yang lebih kecil. Klik pada bagian mana saja dari gambar, lalu gunakan opsi 'Ungroup' Inkscape. Anda mungkin harus mengelompokkan beberapa kali untuk dapat memanipulasi bagian gambar secara langsung.
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)