在进行文章写作时,难免会放入一些柱状图,所以学习了pyecharts绘图,以便下次使用
from pyecharts.charts import Bar # 导入柱状图的使用模块Bar
from pyecharts.options import LabelOpts # 导入label模块
bar=Bar() # 创建一个空的柱状图对象
bar.add_xaxis(['中国','美国','日本']) # 添加x轴所需数据
bar.add_yaxis('GDP',[30,20,10],label_opts=LabelOpts(position='right')) # 添加y轴数据,label_opts中position='right'表示将y轴数据显示在右侧
bar.reversal_axis() # x,y轴位置调换
bar.render() # 生成html,网页显示
bar.reversal_axis()
删去(注释掉),因为该代码就是可以将x轴y轴的数据进行转换,删去的结果为:
可以看到将横的柱状图改为了竖的柱状图,但是label数据却显示在右侧,是因为在横柱状图代码:
bar.add_yaxis('GDP',[30,20,10],label_opts=LabelOpts(position='right'))
中,设置了label_opts=LabelOpts(
position=‘right’)
,即label在右侧显示,可以将position='right'改为``position='top'
,即可居中显示,结果为:
from pyecharts.charts import Bar,Timeline # 导入柱状图Bar和时间线
from pyecharts.options import LabelOpts # 导入label标签
from pyecharts.globals import ThemeType #导入主题类型
#建立5个基础的柱状图
bar=Bar()
bar.add_xaxis(['中国','美国','日本'])
bar.add_yaxis('GDP',[30,20,10],label_opts=LabelOpts(position='right'))
bar.reversal_axis()
bar1=Bar()
bar1.add_xaxis(['中国','美国','日本'])
bar1.add_yaxis('GDP',[60,10,130],label_opts=LabelOpts(position='right'))
bar1.reversal_axis()
bar2=Bar()
bar2.add_xaxis(['中国','美国','日本'])
bar2.add_yaxis('GDP',[120,5,40],label_opts=LabelOpts(position='right'))
bar2.reversal_axis()
bar3=Bar()
bar3.add_xaxis(['中国','美国','日本'])
bar3.add_yaxis('GDP',[49,79,63],label_opts=LabelOpts(position='right'))
bar3.reversal_axis()
bar4=Bar()
bar4.add_xaxis(['中国','美国','日本'])
bar4.add_yaxis('GDP',[90,20,83],label_opts=LabelOpts(position='right'))
bar4.reversal_axis()
#建立时间线和主题类型
timeline=Timeline(
{
"theme":ThemeType.LIGHT
}
)
#在时间线中,添加五个基础柱状图
timeline.add(bar,'点0')
timeline.add(bar1,'点1')
timeline.add(bar2,'点2')
timeline.add(bar3,'点3')
timeline.add(bar4,'点4')
设置时间线的状态
timeline.add_schema(
play_interval=1000, # 自动播放的时间间隔
is_timeline_show=True, # 显示时间线
is_auto_play=True, # 自动播放
is_loop_play=True # 自动循环播放
)
timeline.render()
20230209_212238
数据中的内容使用记事本打开,内容为:
读取XLS.csv格式的数据,此处不能用UTF-8,而是ANSI,代码:
f=open(r'C:\Users\Administrator\Desktop\1\1960-2019全球GDP数据.csv','r',encoding='ANSI')
然后使用readlines()函数将读取到的数据转换为列表,每一行为一个元素:
ff=f.readlines()
然后,使用pop()函数,删除第一行的year,GDP,rate,在转换为列表中,‘year,GDP,rate’为列表第一个元素:
ff.pop(0)
for循环得到year,country,data数据
for line in ff:
year=int(line.split(',')[0])
country=line.split(',')[1]
data=float(line.split(',')[2])
try:
a[year].append([country,data])
except KeyError:
a[year]=[]
a[year].append([country, data])
建立时间线和循环,进行整个动态绘制:
tt=Timeline(
{
"theme":ThemeType.LIGHT
}
)
aa=sorted(a.keys())
for i in aa:
a[i].sort(key=lambda ii: ii[1],reverse=True)
ss=a[i][0:8]
xx=[]
yy=[]
for iii in ss:
xx.append(iii[0])
yy.append(iii[1]/100000000)
bar=Bar()
xx.reverse()
yy.reverse()
bar.add_xaxis(xx)
bar.add_yaxis('GDP亿',yy,label_opts=LabelOpts(position="right"))
bar.reversal_axis()
bar.set_global_opts(
title_opts=TitleOpts(title=('%d年全球前八个国家的GDP对比情况'%i))
)
tt.add(bar,str(aa))
tt.add_schema(
play_interval=1000, # 自动播放的时间间隔
is_timeline_show=True, # 显示时间线
is_auto_play=True, # 自动播放
is_loop_play=True # 自动循环播放
)
tt.render()
from pyecharts.charts import Bar,Timeline
from pyecharts.options import LabelOpts,TitleOpts
from pyecharts.globals import ThemeType
f=open(r'C:\Users\Administrator\Desktop\1\1960-2019全球GDP数据.csv','r',encoding='ANSI')
ff=f.readlines()
f.close()
ff.pop(0)
a={}
for line in ff:
year=int(line.split(',')[0])
country=line.split(',')[1]
data=float(line.split(',')[2])
try:
a[year].append([country,data])
except KeyError:
a[year]=[]
a[year].append([country, data])
tt=Timeline(
{
"theme":ThemeType.LIGHT
}
)
aa=sorted(a.keys())
for i in aa:
a[i].sort(key=lambda ii: ii[1],reverse=True)
ss=a[i][0:8]
xx=[]
yy=[]
for iii in ss:
xx.append(iii[0])
yy.append(iii[1]/100000000)
bar=Bar()
xx.reverse()
yy.reverse()
bar.add_xaxis(xx)
bar.add_yaxis('GDP亿',yy,label_opts=LabelOpts(position="right"))
bar.reversal_axis()
bar.set_global_opts(
title_opts=TitleOpts(title=('%d年全球前八个国家的GDP对比情况'%i))
)
tt.add(bar,str(aa))
tt.add_schema(
play_interval=1000, # 自动播放的时间间隔
is_timeline_show=True, # 显示时间线
is_auto_play=True, # 自动播放
is_loop_play=True # 自动循环播放
)
tt.render()
20230209_221214