Rumah >pembangunan bahagian belakang >Tutorial Python >Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

王林
王林ke hadapan
2023-04-13 15:01:061325semak imbas

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Teks

Helo semua, saya teknologi kecerdasan buatan Python

Kaedah 1

Sangat disyorkan Modul pemplotan Python matplotlib: pemplotan python. Gambar yang dilukis benar-benar mewah dan berkelas, ​​sederhana, mewah dan konotatif~ Ia sesuai untuk semua jenis lukisan dari 2D hingga 3D, dari skalar hingga vektor. Boleh disimpan dalam pelbagai format dari eps, pdf hingga svg, png, jpg. Selain itu, fungsi lukisan Matplotlib pada asasnya mempunyai nama yang serupa dengan Matlab, jadi kos pembelajaran migrasi adalah agak rendah. Sumber terbuka dan percuma. Seperti yang ditunjukkan dalam gambar (gambar dalam penerangan tajuk adalah di penghujung): (Gambar berikut dipetik dari galeri Thumbnail)

Imej fungsi biasa seperti ini:

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

plt.fill(x, y1, 'b', x, y2, 'r', alpha=0.3)

Dan gambar Taburan jenis ini (saya tidak tahu bagaimana untuk menyebutnya dalam bahasa Cina...):

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

plt.scatter(x, y, s=area, alpha=0.5)

Skema warna lut sinar yang indah. Tunjukkan keperibadian anda yang mulia dan keren Perkara yang paling penting ialah ia hanya memerlukan satu baris kod untuk melakukannya. Mulai sekarang, anda tidak perlu lagi menanggung padanan warna yang menyakitkan dalam Matlab dan GNUPlot.

Ingin melukis data 3D? Tiada masalah (mungkin lebih senang menggunakan mayavi):

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)

Anda boleh mempunyai empat baris kod (tiga baris terakhir adalah sama ketinggian pada Garisan satah koordinat, secara tegasnya ia masih satu baris).

Selain daripada itu, selagi anda adalah medan vektor, rangkaian atau sebarang keperluan aneh lain boleh dikendalikan:

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn)
plt.colorbar()

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

plt.triplot(x, y, triangles, 'go-')
plt.title('triplot of user-specified triangulation')
plt.xlabel('Longitude (degrees)')
plt.ylabel('Latitude (degrees)')

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

ax = plt.subplot(111, polar=True)
bars = ax.bar(theta, radii, width=width, bottom=0.0)

Ini belum berakhir, Matplotlib juga menyokong pemasukan formula Latex, apabila gambar yang dilukis oleh orang lain masih kelihatan seperti ini (petikan gambar berikut Dari Tutorial Matplotlib (terjemahan))

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Anda boleh mengubahnya menjadi seperti ini:

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Jika dipasangkan dengan IPython sebagai terminal larian (gambar ini dilukis sendiri~):

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Ia hanyalah artifak, adakah ia wujud?

Lebih baik bertindak daripada bertindak, tunggu apa lagi?

Seperti yang diingatkan oleh @Xu Zheng, saya ingin menambah bahawa matplotlib juga boleh menghasilkan grafik gaya xkcd~

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

( gambar Dipetik daripada Internet)

Selain itu, untuk kandungan yang lebih menarik digabungkan dengan IPython Notebook, sila lihat http://nbviewer.ipython.org/

Jika anda mendapati ia menyusahkan untuk memasang dan hanya berlaku kepada Jika anda berada di bawah sistem Windows, anda boleh mencuba winpython, versi pengedaran Python - Portable Scientific Python 2/3 32/64bit Distribution untuk Windows.

Memandangkan @van li mempersoalkan sama ada matplotlib boleh melukis imej yang ditunjukkan dalam soalan, saya akan menggunakan matplotlib untuk melukis imej dalam soalan di sini seperti berikut:

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Kod di sini:

https://gist.github.com/coldfog/c479124328fc6bb8b789

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!


Kod ada di sini:


https://gist.github.com/coldfog/5da63a6958fc0a949b52

看到楼下有人说配色和好看,唉....那我也贴几个吧...只不过当初限于篇幅没有写而已。另外,搜索公众号顶级python后台回复“进阶”,获取一份惊喜礼包。

首先,python有一个专门的配色包jiffyclub/brewer2mpl,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。

此外还有一些致力于美化绘图的库,用起来也都非常方便,比如olgabot/prettyplotlib 。

废话不多说,上图就是王道。(下面图片来源网络)

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

有人可能会说需要复杂的设置,其实也不用。比如上边这幅图,只需要多加一个参数就好:

cmap=brewer2mpl.get_map('RdBu', 'diverging', 8, reverse=True).mpl_colormap,

楼下说到统计绘图。嘛seaborn 是一个调用 matplotlib 的统计绘图库,上图:

(https://github.com/mwaskom/seaborn)  

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

代码一行,后边的几乎都是一行,没做其他设置,默认就这样。我就不贴其他的代码了:

g = sns.jointplot(x1, x2, kind="kde", size=7, space=0)

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

还有个更炫酷的可交互式绘图,大家自己戳开看吧:

http://nbviewer.ipython.org/github/plotly/python-user-guidechaocc/blob/master/s0_getting-started/s0_getting-started.ipynb

遇到安装问题的请尝试Anaconda这个Python发行版。下载安装后直接使用即可,它几乎预装了所有要用到的科学计算及可视化的库。

有盆友在评论里说希望能有完整的教程,确实就这个答案来说,离实际使用还有很大的距离,网上相关的中文资料也不多。不过真要写起来这个答案也装不下,况且写在这个问题下也不是很恰当。等到那天我有专栏了再说吧,到时候也许会写一个关于可视化的系列教程。

方法二

翻遍这个问题下的所有回答,发现凡是提到Matlab的,其评价中常有‘锯齿’,‘菜鸟’,‘难看’,‘不忍直视’等标签。

然而,2020年了,技术提升了,观念进步了,当一些基本问题解决后,Matlab还那么‘不堪’吗?

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

观察Mathematica、Origin、Python/matplotlib、R/ggplot2等软件绘制的数据、结果图,其与Matlab图的差异主要体现在点、线、面等对象属性(位置、尺寸、颜色等)的不同上。

既然只是属性的不同,那是不是只要修改一下这些信息,就可以实现各种软件绘图风格之间的转换了呢?

答案是肯定的。

比如,这是高赞回答 @冯昱尧用Python/matplotlib绘制的一幅图:

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

我们用Matlab默认属性来绘制,效果是这样的(没加误差棒):

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Kemudian, cuma ubah suai kedudukan, saiz, warna dan maklumat lain untuk mendapatkan gambar dengan gaya yang serupa (tiada bar ralat ditambah):

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Bila kami menggunakan idea ini untuk memikirkan cara melukis ilustrasi, menjadi mudah untuk merealisasikan idea kecil kami sendiri, meniru atau mencipta ilustrasi yang ideal.

Sebagai contoh, pada suatu hari, saya perasan bahawa warna langit petang itu cantik, dan saya terfikir: Mengapa saya tidak boleh melukisnya ke dalam ilustrasi tesis saya? (Lihat: Padanan warna ilustrasi kertas Matlab 2 - kecerunan semula jadi)

Jadi,

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Untuk contoh lain, pada suatu hari, saya melihat foto teman wanita saya dan fikir ia cantik, jadi saya fikir: Mengapa saya tidak boleh menariknya ke dalam ilustrasi kertas saya? (Lihat: Warna ilustrasi kertas Matlab padanan 1 - warna teman wanita saya)

Jadi,

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Pada masa ini, ada adalah seorang kawan yang akan saya katakan: "Ya ampun, penjawab, anda perlu menaip semua perkara mewah ini baris demi baris. Ia terlalu menyusahkan."

Sama seperti R mempunyai ggplot2, Python mempunyai matplotlib, Matlab sebenarnya mempunyai banyak kit lukisan siap sedia, dan anda tidak perlu membangunkannya sendiri.

Sebagai contoh,

Pierre Morel [1] digabungkan dengan ggplot2, membangunkan alat tatabahasa untuk melukis grafik kompleks.

Diinspirasikan oleh ggplot2 (Wickham 2009), pelaksanaan R prinsip "tatabahasa grafik" (Wilkinson 1999), gramm menambah baik fungsi plot Matlab, membolehkan menjana angka kompleks menggunakan berorientasikan objek peringkat tinggi kod.

Kesan sampel adalah seperti berikut:


Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Begitu juga, Stephen Cobeldick [2] mengalihkan skema warna matplotlib ke Matlab. Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Dalam erti kata lain, anda boleh menggunakan skema warna matplotlib secara langsung dalam Matlab, dan anda tidak perlu sentiasa menggunakan 'jet'.

Peta warna lalai MatPlotLib 2.0 yang dialihkan ke MATLAB Penyerahan ini juga termasuk peta warna Line ColorOrder!

Kesan sampel adalah seperti berikut:

<.>


Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!

Terdapat banyak kit alat khusus untuk ilustrasi kertas, jadi saya tidak akan memperkenalkannya satu persatu di sini.

Secara umumnya, alatan hanyalah alat, ia tidak lebih tinggi atau lebih rendah.

Jika anda ingin melukis ilustrasi yang cantik, kuncinya terletak pada orang yang menggunakan alatan tersebut.

Tumpu perhatian dan sampai ke puncak.

Rujukan:

​https://www.php.cn/link/b3ddb7c5b10be95dbc3f9152c58becce​​​

​https://www.php.cn/link/171ae1bbb81475eb96287dd78565b38b​

Atas ialah kandungan terperinci Lukis ilustrasi profesional yang begitu cantik dalam Python? Sangat mudah!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam