Rumah > Artikel > pembangunan bahagian belakang > Gunakan Python untuk melukis animasi gif yang menarik yang mengagumkan semua orang
Dalam artikel sebelum ini, editor telah berkongsi cara menggunakan Python
modul dalam gif
untuk mencipta gif
Carta format,
adalah hebat, gunakan Python untuk melukis carta visualisasi dinamik, dan simpannya dalam format gif Hari ini, saya akan memperkenalkan kepada anda kaedah baharu untuk membuat carta dalam format gif
>Modul berkaitan, langkah dan kaedahnya juga agak mudah dan mudah difahami. matplotlib
import bokeh bokeh.sampledata.download()
bokeh
dan kemudian mengimport set data untuk digunakan kemudian. >output
Lukis beberapa carta statik dahulu
from bokeh.sampledata.population import data import numpy as np data = filter_loc('United States of America') data.head()
import seaborn as sns import matplotlib.pyplot as plt import matplotlib.patheffects as fx # 绘制图表的函数 def make_plot(year): # 根据年份来筛选出数据 df = data[data.Year == year] # 制作图表 fig, (ax1, ax2) = plt.subplots(1, 2, sharey = True) ax1.invert_xaxis() fig.subplots_adjust(wspace = 0) ax1.barh(df[df.Sex == 'Male'].AgeGrp, df[df.Sex == 'Male'].percent, label = 'Male') ax2.barh(df[df.Sex == 'Female'].AgeGrp, df[df.Sex == 'Female'].percent, label = 'Female', color = 'C1') country = df.Location.iloc[0] if country == 'United States of America': country == 'US' fig.suptitle(f'......') fig.supxlabel('......') fig.legend(bbox_to_anchor = (0.9, 0.88), loc = 'upper right') ax1.set_ylabel('Age Groups') return fig
gif
output
Dengan cara ini, kami menghasilkan beberapa gambar statik Carta kemudiannya dihimpunkan menjadi beberapa carta dalam format Kod adalah seperti berikut:
years = [i for i in set(data.Year) if i < 2022] years.sort() for year in years: fig = make_plot(year) fig.savefig(f'{year}.jpeg',bbox_inches = 'tight')output
gif
Jika ruang cakera komputer agak sempit, , atau tiada tempat untuk menyimpan berpuluh-puluh carta ini. Jadi anda akan tertanya-tanya sama ada ia boleh dilakukan dalam satu langkah. Sudah tentu boleh. Contohnya, jika kita merancang untuk melukis taburan perkadaran penduduk pada umur yang berbeza dari tahun 1950 hingga 2020, langkah pertama ialah melukis taburan perkadaran penduduk pada umur yang berbeza pada tahun 1950, iaitu tahun permulaan. Rajah, kodnya adalah seperti berikut
import matplotlib.animation as animation fig, ax = plt.subplots() ims = [] for year in years: im = ax.imshow(plt.imread(f'{year}.jpeg'), animated = True) ims.append([im]) ani = animation.ArtistAnimation(fig, ims, interval=600) ani.save('us_population.gif')output
def run(year): # 通过年份来筛选出数据 df = data[data.Year == year] # 针对不同地性别来绘制 total_pop = df.Value.sum() df['percent'] = df.Value / total_pop * 100 male.remove() y_pos = [i for i in range(len(df[df.Sex == 'Male']))] male.patches = ax1.barh(y_pos, df[df.Sex == 'Male'].percent, label = 'Male', color = 'C0', tick_label = df[df.Sex == 'Male'].AgeGrp) female.remove() female.patches = ax2.barh(y_pos, df[df.Sex == 'Female'].percent, label = 'Female', color = 'C1', tick_label = df[df.Sex == 'Female'].AgeGrp) text.set_text(year) return male#, female
然后我们调用animation.FuncAnimation()
方法,
ani = animation.FuncAnimation(fig, run, years, blit = True, repeat = True, interval = 600) ani.save('文件名.gif')
output
这样就可以一步到位生成gif
格式的图表,避免生成数十张繁多地静态图片了。
<span style="color: #2b2b2b;">gif</span>
动图放置在一张大图当中
最后我们可以将若干张gif
动图放置在一张大的图表当中,代码如下
import matplotlib.animation as animation # 创建一个新的画布 fig, (ax, ax2, ax3) = plt.subplots(1, 3, figsize = (10, 3)) ims = [] for year in years: im = ax.imshow(plt.imread(f'文件1{year}.jpeg'), animated = True) im2 = ax2.imshow(plt.imread(f'文件2{year}.jpeg'), animated = True) im3 = ax3.imshow(plt.imread(f'文件3{year}.jpeg'), animated = True) ims.append([im, im2, im3]) ani = animation.ArtistAnimation(fig, ims, interval=600) ani.save('comparison.gif')
output
Atas ialah kandungan terperinci Gunakan Python untuk melukis animasi gif yang menarik yang mengagumkan semua orang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!