一个Python可视化需要答疑。
这个是绘制每日美国金牌总数的折线图。但是y轴信息显示不出来,不知道什么原因。P1是代码,P2是itemtoges.xlsx文件,P3是我的结果,P4是我想要做成的样式。
import pandas as pd
from pyecharts.charts import Line
from pyecharts import options as opts
import matplotlib.pyplot as plt
from datetime import datetime
data = pd.read_excel('itemtoge.xlsx')
# 筛选美国金牌、银牌、铜牌数据
usa_gold = data[(data['名次'] == 1)&(data['国家'] == '美国')]
usa_silver = data[(data['名次'] == 2)&(data['国家'] == '美国')]
usa_bronze = data[(data['名次'] == 3)&(data['国家'] == '美国')]
#print(usa_gold)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 获得金牌日期列表
date_str = list(set(usa_gold['日期']))
result_list = sorted(date_str, key=lambda x: datetime.strptime(x, "%Y/%m/%d"))
print(result_list)
#日期所对应的累加的银牌
def count_num(usa_three):
group = usa_three.groupby('日期') # 按日期分组
s = group.size() # 统计每天的奖牌个数
#print(s)
#print(len(s))
sum = 0
y = []
# 统计每一天的奖牌总量
for n in range(len(s)):
sum = s[n] + sum
y.append(sum)
return y
# 日期所对应的累加的金牌、银牌、铜牌
data_gold = count_num(usa_gold)
data_silver = count_num(usa_silver)
data_bronze = count_num(usa_bronze)
print(data_gold)
'''
3. Pyecharts数据可视化
'''
# 3.1 绘制基础折线图
line = (
Line()
.add_xaxis(result_list)
# 美国线条
.add_yaxis(
'美国', data_gold,
label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(
title='美国金牌',
pos_left='center',
),
yaxis_opts=opts.AxisOpts(
name='金牌/枚',
is_scale=True,
max_=40),
legend_opts=opts.LegendOpts(is_show=False),
))
line.render("1基础折线图.html")
data = pd.read_excel('itemtoge.xlsx')
Excel 也附上
可能是因为数据范围太小,y轴的最大值设置为40,但是数据的最大值没有达到40,导致y轴信息显示不出来。可以尝试将y轴最大值设置为数据的最大值或者更小的值。另外,也可以尝试调整y轴的其他参数,比如刻度间隔等。