影岚511 2024-07-25 19:00 采纳率: 100%
浏览 53
已结题

用pyecharts时间线柱状图出了些问题

请教各位,图片中右侧重叠的文字部分是怎么回事呀?该怎么把它消除掉?
图片下方是我写的代码,数据本身应该没问题,看起来像是所有变化的x轴内容都堆叠在一起了,尝试了好几次都消不掉它求各位帮忙看看(叩谢)
(python初学者,正在学习中请口下留情,谢谢)

img

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType

# 获取文件数据
f = open("D:/学习/python_learning/数据可视化/动态柱状图/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一行
del data_lines[0]
# 取出每一行的年份、国家、GDP,并放入字典中
# 字典格式:{年份:[国家, gdp], 年份:[国家, gdp]}
data_dict = {}
for each in data_lines:
    each = each.replace("\n", "")  # 去除\n
    each_list = each.split(",")  # 分割成列表
    year = int(each_list[0])  # 年份
    country = each_list[1]  # 国家
    gdp = float(each_list[2])  # gdp,float将科学计数法还原
# 判断字典里有没有指定的key,并将列表和关键字year添加到字典中
    try:
        data_dict[year].append([country, gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country, gdp])
# 排序年份 ! 3.7版本后字典有序,可不进行排序 !
sorted_year_list = sorted(data_dict.keys())

# 创建Timeline对象
timeline = Timeline({"theme": ThemeType.LIGHT})  # 设置动态柱状图主题,注意是!字典!
# 将每一年的数据输入一个bar柱状图
for year in sorted_year_list:
    # 排序gdp,取每年gdp前8的国家与其gdp
    sorted_gdp_list = sorted(data_dict[year], key=lambda element: element[1], reverse=True)
    """
    sort 与 sorted 区别:
        1、sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
        2、list 的 sort 方法返回的是对已经存在的列表进行操作(修改列表),而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行
           的操作。
        3、sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
    """
    year_selected_data = sorted_gdp_list[:8]
    x_data = []  # 国家
    y_data = []  # gdp
    # 将每年的国家和gdp数据分别填入x、y轴
    for country_gdp in year_selected_data:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1]/100000000)
    # 构建柱状图
    bar = Bar()
    x_data.reverse()  # 让GDP数据最高的在图表最上方显示
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    # 反转x轴和y轴
    bar.reversal_axis()
    # 设置每年柱状图标题
    bar.set_global_opts(TitleOpts(title=f"{year}年GDP前8名数据对比"))
    # 向Timeline对象中添加柱状图
    timeline.add(bar, str(year))  # 之前添加的不会被覆盖
# 全局设置


# 设置时间线自动播放
timeline.add_schema(
    is_auto_play=True,
    play_interval=500,   # 自动播放时间间隔,单位是毫秒(ms)
    is_loop_play=False  # 循环播放开关
)
# 通过时间线绘图
timeline.render("GDP动态柱状图.html")



  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-25 19:00
    关注

    引自免费微信小程序:皆我百晓生

    这个问题似乎不是关于Python编程的问题,而是关于如何处理和展示数据的一种视觉化方式。根据您提供的代码,您试图创建一个时间线柱状图,但遇到了一些问题。为了更好地理解您的问题并提供可能的解决方案,让我们先从您提供的代码开始。

    首先,您提到遇到的问题似乎是由于数据重叠导致的。您可以尝试调整reversal_axis()选项,使其只针对Y轴进行反转,而不是整个柱状图。例如:

    bar.reversal_axis(yaxis_index='all')
    

    这将仅反转Y轴上的所有柱子。如果您仍然遇到问题,请提供更多细节,以便我能为您提供更具体的建议。

    此外,您还提到想要解决的是"图片中右侧重叠的文字部分"的问题。如果您想删除这些文字,可以尝试使用CSS样式或者HTML属性来控制文本的位置和大小。例如,可以将文本放置在<p>标签内,并使用style属性来改变字体大小和颜色等。

    最后,如果您需要绘制图形,请上传相关的图片文件,这样我可以为您生成模拟图像。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月25日