鱼C论坛

 找回密码
 立即注册
查看: 2239|回复: 5

matplotlib画双纵轴图标显示问题

[复制链接]
发表于 2021-8-11 22:34:17 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 风船野 于 2021-8-11 22:36 编辑

求各位大佬有什么修改意见或其他方法,画双纵轴图时显示出四个图标。
在画双纵轴坐标时,出现:A proxy artist may be used instead.报错,
在网上查找后都是下图解决方案:
01.png
按提示添加逗号修改方案后又得到:too many values to unpack (expected 1)报错。
02.png
代码如下:
  1. bar_width = 0.4
  2.     x_1 = list(range(len(x1)))
  3.     x_2 = [i + bar_width for i in x_1]

  4.     y_1 = df_weekend["营业收入"].values
  5.     y_2 = df_week["营业收入"].values
  6.     y_3 = df_weekend["订单笔数"].values
  7.     y_4 = df_week["订单笔数"].values

  8.     fig = plt.figure(figsize=(23, 9), dpi=100)
  9.     ax1 = fig.add_subplot(111)
  10.     ax2 = ax1.twinx()
  11.     l1, = ax1.bar(x_2, y_2, width=bar_width, label="工作日")   #  修改添加逗号部分
  12.     l2, = ax1.bar(x_1, y_1, width=bar_width, label="周末")

  13.     ax1.set_xlabel("时间", fontproperties=my_font)
  14.     ax1.set_ylabel("收入/元", fontproperties=my_font)
  15.     ax1.set_xticks(x_1)
  16.     ax1.set_xticklabels(x1)
  17.     ax1.set_yticks(range(0, 10000, 500))
  18.     plt.title("周末与工作日收入比关系图", fontproperties=my_font, fontsize=20)

  19.     l3, = ax2.plot(x_1, y_3, label="周末", color="red")
  20.     l4, = ax2.plot(x_1, y_4, label="工作日", color="cyan")
  21.     ax2.set_ylabel("笔", fontproperties=my_font)
  22.     ax2.set_yticks(range(0, 70, 5))
  23.     plt.legend([l1, l2, l3, l4], ["工作日", "周末", "工作日", "周末"], loc=2, prop=my_font)    # 图标显示部分

  24.     for tl in ax1.get_xticklabels():
  25.         tl.set_rotation(45)
  26.         tl.set_fontsize(15)

  27.     plt.savefig("./周末与工作日收入比关系图.png")
  28.     plt.show()
复制代码

我又尝试了下面显示多图标方法:

  1.     lns = l1 + l2 + l3 + l4  
  2.     labs = [l.get_label() for l in lns]
  3.     ax1.legend(lns, labs, prop=my_font, loc=4)
复制代码

结果报错:
屏幕截图 .png
各位大佬有什么修改意见或其他方法,目标显示出四个图标。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-11 23:35:32 | 显示全部楼层
本帖最后由 阿奇_o 于 2021-8-11 23:38 编辑

你的数据是怎样的咯,你都没给出来,报错说的就是你的数据结构的问题(长度不一致,"解包不了",即too many values to unpack)

不对,你的语法有问题,那 l1 后 干嘛加个逗号 ??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-12 11:57:31 | 显示全部楼层
阿奇_o 发表于 2021-8-11 23:35
你的数据是怎样的咯,你都没给出来,报错说的就是你的数据结构的问题(长度不一致,"解包不了",即too many ...

为什么加","请看第一个报错解决方案。这只是个图例显示的问题,跟数据没有关系。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 12:45:10 | 显示全部楼层
风船野 发表于 2021-8-12 11:57
为什么加","请看第一个报错解决方案。这只是个图例显示的问题,跟数据没有关系。

那我问你 ax1.bar() 返回什么?  ——人家写的是 plt.plot() ,   不是 ax1.bar()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-12 19:39:24 | 显示全部楼层
阿奇_o 发表于 2021-8-12 12:45
那我问你 ax1.bar() 返回什么?  ——人家写的是 plt.plot() ,   不是 ax1.bar()

plot方法是画折线图,bar是条形图。ax1只是plt的一个对象而已,因为要画双纵轴,所以用ax1,和plt是一样的,这也没有问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 19:52:25 | 显示全部楼层
风船野 发表于 2021-8-12 19:39
plot方法是画折线图,bar是条形图。ax1只是plt的一个对象而已,因为要画双纵轴,所以用ax1,和plt是一样 ...

嗯,好,没问题,让你瞎搞吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 07:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表