码字小白菜努力中 2023-06-30 14:12 采纳率: 88%
浏览 20
已结题

matplotlib绘制横向柱状图,为什么柱状图显示在连接处,明明5个数据有6个柱状(语言-python)


# -*-coding:gb2312-*-
import matplotlib.pyplot as plt
import numpy as np

# 中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 设置画布大小
plt.figure(figsize = (15,6),dpi = 60)

size=5
x = np.arange(size)
y1 = np.array([12,16,40,22,3])
y2 = np.array([8,16,40,21,11])
labels = np.array(["北京","上海","广州","深圳","杭州"])

plt.subplot(1,2,1)
plt.barh(x, y1, tick_label=labels, height=2, color='yellow')
for a,b in zip(y1, x):
    plt.text(a, b, b, ha='center')
# 标题
plt.title("套装一在热销城市的销量", fontsize=18)
plt.xlabel("销量", fontsize=10)
plt.ylabel('城市', fontsize=10)

plt.subplot(1,2,2)
plt.barh(x, y2, tick_label=labels, height=2, color='green')
plt.title("套装二在热销城市的销量", fontsize=18)
plt.xlabel("销量", fontsize=10)
for a,b in zip(y2, x):
    plt.text(a, b, b, ha='center')

plt.show()

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-30 16:42
    关注
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7495612
    • 你也可以参考下这篇文章:matplotlib图片/子图标题置于底部 设置坐标轴位置 python
    • 除此之外, 这篇博客: matplotlib绘制出现坐标轴中文乱码的情况怎么处理?中的 用python绘制数据出现中文乱码的情况怎么处理? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 通常我们绘制含有中文的exce数据l 就会出现乱码的情况,要将乱码的中文复现,只需要输入如下代码:

      plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
      plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
      

      在这里插入图片描述
      以上图为例,我们看一下结果:

      import xlrd
      import matplotlib.pyplot as plt
      #调节字体
      plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
      shouyi= ["133", "111", "1145"]
      zhichu  = ["13", "56", "66"]
      data = ["7月10日", "7月11日", "7月12日"]
      
      fig, ax = plt.subplots()
      ax.plot(data, shouyi, label="收益")
      ax.plot(data, zhichu, label="支出")
      ax.legend()
      
      plt.show()
      

      在这里插入图片描述

    • 您还可以看一下 白勇老师的玩转Matplotlib数据绘图库课程中的 设置线形风格小节, 巩固相关知识点
    • 以下回答由chatgpt基于相关博客总结生成:

      根据参考资料和知识,解决问题的步骤如下:

      1. 首先,我们需要确认是否在使用 plt.plot 函数绘制柱状图时出现了问题。如果是的话,我们可以尝试使用 plt.bar 函数来绘制柱状图,该函数专门用于绘制柱状图。

      2. 如果问题不在于使用的函数,而是在数据上,我们需要检查数据的维度和格式,确保数据没有错误。可以使用 print 打印一下数据,观察是否符合预期。

      3. 如果数据没有问题,但仍然出现了多余的柱状图,请检查是否有多余的元素或重复的数据。可以使用 set 函数将数据转换为集合,然后再转换回列表,以去除重复的元素。

      下面是一个可能的解决方案:

      import matplotlib.pyplot as plt
      import random
      
      # 生成随机数据
      x = range(5)
      y = [random.randint(20, 35) for _ in range(5)]
      
      # 尝试使用 plt.bar 绘制柱状图
      plt.bar(x, y, color='plum')
      
      # 设置坐标轴标签和标题
      plt.xlabel('x')
      plt.ylabel('y')
      plt.title('柱状图')
      
      # 显示图例
      plt.legend(['柱状图'])
      
      # 显示网格线
      plt.grid(alpha=0.1)
      
      # 显示图形
      plt.show()
      

      如果以上解决方案不能解决问题,请确认是否存在其他代码或数据与之交互,或者提供更多细节和代码以便更好地帮助你解决问题。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月1日
  • 已采纳回答 6月30日
  • 创建了问题 6月30日

悬赏问题

  • ¥30 为什么会失败呢,该如何调整
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析