matplotlib画双纵轴图标显示问题
本帖最后由 风船野 于 2021-8-11 22:36 编辑求各位大佬有什么修改意见或其他方法,画双纵轴图时显示出四个图标。
在画双纵轴坐标时,出现:A proxy artist may be used instead.报错,
在网上查找后都是下图解决方案:
按提示添加逗号修改方案后又得到:too many values to unpack (expected 1)报错。
代码如下: bar_width = 0.4
x_1 = list(range(len(x1)))
x_2 =
y_1 = df_weekend["营业收入"].values
y_2 = df_week["营业收入"].values
y_3 = df_weekend["订单笔数"].values
y_4 = df_week["订单笔数"].values
fig = plt.figure(figsize=(23, 9), dpi=100)
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
l1, = ax1.bar(x_2, y_2, width=bar_width, label="工作日") #修改添加逗号部分
l2, = ax1.bar(x_1, y_1, width=bar_width, label="周末")
ax1.set_xlabel("时间", fontproperties=my_font)
ax1.set_ylabel("收入/元", fontproperties=my_font)
ax1.set_xticks(x_1)
ax1.set_xticklabels(x1)
ax1.set_yticks(range(0, 10000, 500))
plt.title("周末与工作日收入比关系图", fontproperties=my_font, fontsize=20)
l3, = ax2.plot(x_1, y_3, label="周末", color="red")
l4, = ax2.plot(x_1, y_4, label="工作日", color="cyan")
ax2.set_ylabel("笔", fontproperties=my_font)
ax2.set_yticks(range(0, 70, 5))
plt.legend(, ["工作日", "周末", "工作日", "周末"], loc=2, prop=my_font) # 图标显示部分
for tl in ax1.get_xticklabels():
tl.set_rotation(45)
tl.set_fontsize(15)
plt.savefig("./周末与工作日收入比关系图.png")
plt.show()
我又尝试了下面显示多图标方法:
lns = l1 + l2 + l3 + l4
labs =
ax1.legend(lns, labs, prop=my_font, loc=4)
结果报错:
各位大佬有什么修改意见或其他方法,目标显示出四个图标。 本帖最后由 阿奇_o 于 2021-8-11 23:38 编辑
你的数据是怎样的咯,你都没给出来,报错说的就是你的数据结构的问题(长度不一致,"解包不了",即too many values to unpack)
不对,你的语法有问题,那 l1 后 干嘛加个逗号 ?? 阿奇_o 发表于 2021-8-11 23:35
你的数据是怎样的咯,你都没给出来,报错说的就是你的数据结构的问题(长度不一致,"解包不了",即too many ...
为什么加","请看第一个报错解决方案。这只是个图例显示的问题,跟数据没有关系。 风船野 发表于 2021-8-12 11:57
为什么加","请看第一个报错解决方案。这只是个图例显示的问题,跟数据没有关系。
那我问你 ax1.bar() 返回什么?——人家写的是 plt.plot() , 不是 ax1.bar() 阿奇_o 发表于 2021-8-12 12:45
那我问你 ax1.bar() 返回什么?——人家写的是 plt.plot() , 不是 ax1.bar()
plot方法是画折线图,bar是条形图。ax1只是plt的一个对象而已,因为要画双纵轴,所以用ax1,和plt是一样的,这也没有问题。 风船野 发表于 2021-8-12 19:39
plot方法是画折线图,bar是条形图。ax1只是plt的一个对象而已,因为要画双纵轴,所以用ax1,和plt是一样 ...
嗯,好,没问题,让你瞎搞吧。
页:
[1]