xxxxxxxxxxxxjjj 2024-06-20 12:42 采纳率: 0%
浏览 8

请问为什么我plot生成的图像x轴刻度和标签是乱的

为什么我生成的图像x轴刻度和标签是乱的

img

img

fileName=input('请输入要打开的文件名tmdb_5000_movies_budget_popularity_en.txt:') 
            df=pd.read_csv(fileName,sep=",")    
            from pandas import to_datetime
               # 将'release_date'列转换为日期时间格式
            df['release_date'] = to_datetime(df['release_date'])
               # 提取年份并创建新的列'release_year'
            df['release_year'] = df['release_date'].dt.year
               # 现在基于'release_year'进行筛选
            df = df[(df['release_year'] >= 2000) & (df['release_year'] <= 2010)]
                # 从排序后的数据集中每隔50个标题抽取一个,创建一个抽样标题列表
            sampled_titles = df['title'][::50]
                # 按照电影title降序排序
            df_sorted = df.sort_values(by='budget', ascending=False)
               
                # 开始绘制Budget的可视化图表
            plt.figure(figsize=(12, 8), dpi=400)  # 设置图表大小和分辨率
                # 绘制折线图,x轴为电影标题,y轴为预算,颜色为红色,图例标签为'Budget'
            plt.plot(df_sorted['title'], df_sorted['budget'], color='red', label='Budget')
                # 设置图表标题、x轴和y轴的标签
            plt.title('Movies Budget (2000-2010)')
            plt.xlabel('Movie Titles (Rotated for Clarity)')
            plt.ylabel('Budget')
                # 旋转x轴标签,斜45度
            plt.xticks(rotation=45, fontsize=12)
            plt.xticks(sampled_titles)
                # 显示图例
            plt.legend()
            # 自动调整子图参数,使之填充整个图像区域
            plt.tight_layout()
            # 保存图表到指定路径和分辨率
            plt.savefig('movies_en_budget_2000_2010.png', dpi=400)
            # 显示图表
            plt.show()
                
            # 绘制Popularity的可视化图表,过程与上述Budget图表类似
            df['popularity'] = df['popularity'].astype(float)
            df_sorted = df.sort_values(by='popularity', ascending=False)
            plt.figure(figsize=(12, 8), dpi=400)
            plt.plot(df_sorted['title'], df_sorted['popularity'], color='green', label='Popularity')
            plt.title('Movies Popularity from 2000 to 2010')
            plt.xlabel('Movie Titles') 
            plt.ylabel('Popularity')
            plt.legend()
            plt.xticks(sampled_titles)
            # 旋转x轴标签,以便于阅读
            plt.xticks(rotation=45, fontsize=12)
            plt.tight_layout()
            plt.savefig('movies_en_popularity_2000_2010.png', dpi=400)
            plt.show()
            print("任务5执行成功!") 
            break 

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-20 12:42
    关注

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

    从你的问题描述来看,你正在尝试使用matplotlib来绘制电影的预算和受欢迎度的可视化图表,但遇到了x轴刻度和标签混乱的问题。这可能是由于以下几个原因导致的:

    1. 数据清洗和预处理阶段可能存在问题,导致数据格式或结构不符合预期。
    2. 在设置x轴刻度时可能存在问题,特别是在处理电影标题时。

    针对这些问题,我为你提供以下建议和解决方案:

    对于图1的问题:

    • 确保电影标题数据是清晰的,并且与预算数据匹配。检查数据框df'title'列的数据是否完整且没有重复。
    • 在设置x轴刻度时,尝试使用plt.xticks(range(len(df_sorted)), df_sorted['title'], rotation=45)来确保每个标题都与正确的位置对应。这样,x轴的刻度就会与电影标题匹配。

    对于图2的问题:

    • 同样地,确保受欢迎度数据与电影标题数据匹配。
    • 使用与图1相似的方法来设置x轴刻度。

    修改后的部分代码片段如下(主要修改了设置x轴刻度的部分):

    # ... 其他代码保持不变 ...
    
    # 开始绘制Budget的可视化图表
    plt.figure(figsize=(12, 8), dpi=400)  # 设置图表大小和分辨率
    # 绘制折线图
    plt.plot(df_sorted['title'], df_sorted['budget'], color='red', label='Budget')
    # 设置图表标题、x轴和y轴的标签
    plt.title('Movies Budget (2000-2010)')
    plt.xlabel('Movie Titles')  # 这里的标签描述可能需要调整,确保与x轴数据匹配
    plt.ylabel('Budget')
    # 旋转x轴标签,斜45度,并设置刻度为电影标题
    plt.xticks(range(len(df_sorted)), df_sorted['title'], rotation=45, fontsize=12)
    plt.legend()
    plt.tight_layout()
    plt.savefig('movies_en_budget_2000_2010.png', dpi=400)
    plt.show()
    
    # ... 其他代码保持不变 ...
    
    # 绘制Popularity的可视化图表
    # ... 类似地修改设置x轴刻度的部分 ...
    

    请尝试这些修改,并检查是否解决了你的问题。如果问题仍然存在,请提供更多关于数据或错误消息的详细信息,以便我能更准确地帮助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月20日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏