鱼C论坛

 找回密码
 立即注册
查看: 1635|回复: 27

[已解决]python怎么把Matplotlib里面的左上角的预测业绩和实际业绩的实线变为矩形?

[复制链接]
发表于 2023-7-4 16:11:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False
#%matplotlib inline
#组合图标题
plt.title('某公司2019年的销售业绩报表')
#x和y轴显示的文字
plt.xlabel('月份')
plt.ylabel('销售额')
x=np.arange(12)
y1=[5000,7000,7000,6000,6000,12000,4000,5000,5000,4000,14000,5000] #预期业绩
y2=[4139,8671,8027,7743,6219,16520,5120,6039,5521,4021,18370,6000] #实际业绩
width=0.4 #设置柱形图的宽度
plt.bar(x,y1,width=0.4,align="center",tick_label=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"])
plt.bar(x+width,y2,width=0.4,align="center",tick_label=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"])
x=np.array([0,1,2,3,4,5,6,7,8,9,10,11])
y=np.array([-861,1671,1027,1743,219,4520,1120,1039,521,21,4370,1000])
plt.plot(x,y,'b-',label="差距")
plt.plot(x,y,'b',label="预期业绩")
plt.plot(x,y,color='darkorange',label="实际业绩")
plt.legend()
plt.plot(x,y)
plt.show()
最佳答案
2023-7-4 16:14:20
要将Matplotlib中左上角的实线改为矩形,您可以使用`plt.Rectangle()`函数来绘制矩形。

以下是修改代码的示例:

import numpy as np
import matplotlib.pyplot as plt

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

# 组合图标题
plt.title('某公司2019年的销售业绩报表')
# x和y轴显示的文字
plt.xlabel('月份')
plt.ylabel('销售额')

x = np.arange(12)
y1 = [5000, 7000, 7000, 6000, 6000, 12000, 4000, 5000, 5000, 4000, 14000, 5000]  # 预期业绩
y2 = [4139, 8671, 8027, 7743, 6219, 16520, 5120, 6039, 5521, 4021, 18370, 6000]  # 实际业绩
width = 0.4  # 设置柱形图的宽度

# 绘制柱形图
plt.bar(x, y1, width=0.4, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])
plt.bar(x + width, y2, width=0.4, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])

# 绘制矩形
rect = plt.Rectangle((0, max(max(y1), max(y2))), width=len(x) + width, height=min(min(y1), min(y2)), alpha=0.3, facecolor='gray')
plt.gca().add_patch(rect)

# 绘制其他曲线并设置图例
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
y = np.array([-861, 1671, 1027, 1743, 219, 4520, 1120, 1039, 521, 21, 4370, 1000])
plt.plot(x, y, 'b-', label="差距")
plt.plot(x, y1, 'b', label="预期业绩")
plt.plot(x, y2, color='darkorange', label="实际业绩")
plt.legend()

# 显示图形
plt.show()

以上修改后的代码将在左上角以矩形的形式显示实线,用灰色填充。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-4 16:12:15 | 显示全部楼层
本帖最后由 陶远航 于 2023-7-4 16:38 编辑

根据您的描述,如果您想将预测业绩和实际业绩显示为矩形而不是实线,您可以使用plt.bar函数来创建矩形条形图,代替plt.plot函数的使用。这样可以将对应的数据以矩形的形式呈现。

下面是修改后的代码示例:
python
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.title('某公司2019年的销售业绩报表')
plt.xlabel('月份')
plt.ylabel('销售额')

x = np.arange(12)
y1 = [5000, 7000, 7000, 6000, 6000, 12000, 4000, 5000, 5000, 4000, 14000, 5000]  # 预期业绩
y2 = [4139, 8671, 8027, 7743, 6219, 16520, 5120, 6039, 5521, 4021, 18370, 6000]  # 实际业绩
width = 0.4

plt.bar(x, y1, width=width, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])
plt.bar(x + width, y2, width=width, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])

plt.show()

请注意,这将替换原先用于绘制折线图的代码部分,使其使用柱状图(矩形条形图)展示预测业绩和实际业绩之间的差距。修改后的代码中移除了多余的plt.plot函数调用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:12:24 | 显示全部楼层
要将Matplotlib中左上角的预测业绩和实际业绩的实线变为矩形,可以使用Matplotlib中的 fill_between 函数来实现。

首先,将以下代码段替换掉原来的绘图代码段:
x = np.arange(12)y1 = [5000, 7000, 7000, 6000, 6000, 12000, 4000, 5000, 5000, 4000, 14000, 5000]  # 预期业绩y2 = [4139, 8671, 8027, 7743, 6219, 16520, 5120, 6039, 5521, 4021, 18370, 6000]  # 实际业绩plt.fill_between(x, y1, y2, where=(y1 > y2), facecolor='red', alpha=0.3, interpolate=True)plt.fill_between(x, y1, y2, where=(y1 < y2), facecolor='green', alpha=0.3, interpolate=True)
这段代码使用 fill_between 函数来绘制矩形。 where 参数用于指定绘制矩形的条件, facecolor 参数用于指定矩形的填充颜色, alpha 参数用于指定矩形的透明度, interpolate 参数用于指定是否对矩形进行插值。

最后,运行代码,即可将左上角的预测业绩和实际业绩的实线变为矩形。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:14:20 | 显示全部楼层    本楼为最佳答案   
要将Matplotlib中左上角的实线改为矩形,您可以使用`plt.Rectangle()`函数来绘制矩形。

以下是修改代码的示例:

import numpy as np
import matplotlib.pyplot as plt

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

# 组合图标题
plt.title('某公司2019年的销售业绩报表')
# x和y轴显示的文字
plt.xlabel('月份')
plt.ylabel('销售额')

x = np.arange(12)
y1 = [5000, 7000, 7000, 6000, 6000, 12000, 4000, 5000, 5000, 4000, 14000, 5000]  # 预期业绩
y2 = [4139, 8671, 8027, 7743, 6219, 16520, 5120, 6039, 5521, 4021, 18370, 6000]  # 实际业绩
width = 0.4  # 设置柱形图的宽度

# 绘制柱形图
plt.bar(x, y1, width=0.4, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])
plt.bar(x + width, y2, width=0.4, align="center", tick_label=["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"])

# 绘制矩形
rect = plt.Rectangle((0, max(max(y1), max(y2))), width=len(x) + width, height=min(min(y1), min(y2)), alpha=0.3, facecolor='gray')
plt.gca().add_patch(rect)

# 绘制其他曲线并设置图例
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
y = np.array([-861, 1671, 1027, 1743, 219, 4520, 1120, 1039, 521, 21, 4370, 1000])
plt.plot(x, y, 'b-', label="差距")
plt.plot(x, y1, 'b', label="预期业绩")
plt.plot(x, y2, color='darkorange', label="实际业绩")
plt.legend()

# 显示图形
plt.show()

以上修改后的代码将在左上角以矩形的形式显示实线,用灰色填充。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:34:35 | 显示全部楼层
本帖最后由 陶远航 于 2023-7-4 16:36 编辑
脚本分我一个

如果你发的帖子不到 30 秒就被回复了,说明是脚本
抵制脚本,从我做起!  --sfqxx


那你还叫我给你脚本?@sfqxx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:45:42 | 显示全部楼层
陶远航 发表于 2023-7-4 16:34
那你还叫我给你脚本?@sfqxx

你不给我我才抵制的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:47:00 | 显示全部楼层
sfqxx 发表于 2023-7-4 16:45
你不给我我才抵制的

牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:47:36 | 显示全部楼层
sfqxx 发表于 2023-7-4 16:45
你不给我我才抵制的

去问isdkz要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:48:50 | 显示全部楼层

我为什么没检测到这个?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:48:58 | 显示全部楼层

他的想法跟你一样,不用问

当初他怎么对你的也会怎么对我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:50:20 | 显示全部楼层
sfqxx 发表于 2023-7-4 16:45
你不给我我才抵制的

要不........我给你?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:52:37 | 显示全部楼层
编程追风梦 发表于 2023-7-4 16:50
要不........我给你?

不!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:53:19 | 显示全部楼层
编程追风梦 发表于 2023-7-4 16:50
要不........我给你?

来,100鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:55:07 | 显示全部楼层
编程追风梦 发表于 2023-7-4 16:50
要不........我给你?

你要是给他我会让你用不了这个脚本

我对这个脚本了如指掌,我写的我知道bug在哪

你敢给我就敢停用你的脚本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 16:59:38 | 显示全部楼层
陶远航 发表于 2023-7-4 16:55
你要是给他我会让你用不了这个脚本

我对这个脚本了如指掌,我写的我知道bug在哪

喝,有种了是吧,还敢停我的脚本?我封你的号你信不信??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 17:00:44 | 显示全部楼层
陶远航 发表于 2023-7-4 16:55
你要是给他我会让你用不了这个脚本

我对这个脚本了如指掌,我写的我知道bug在哪

@编程追风梦 不用怕,有 bug 是无法运行的,他没法远程操控你,

而且也可以问 gpt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 17:01:14 | 显示全部楼层
编程追风梦 发表于 2023-7-4 16:59
喝,有种了是吧,还敢停我的脚本?我封你的号你信不信??

我已经给你脚本封了

你用不了,你还敢封我号?!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 17:01:50 | 显示全部楼层
陶远航 发表于 2023-7-4 17:01
我已经给你脚本封了

你用不了,你还敢封我号?!

好,你等着,我马上把你禁言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 17:02:04 | 显示全部楼层
sfqxx 发表于 2023-7-4 17:00
@编程追风梦 不用怕,有 bug 是无法运行的,他没法远程操控你,

而且也可以问 gpt

我加了一种特殊的方法,Py可以联网你不知道吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 17:03:15 | 显示全部楼层
sfqxx 发表于 2023-7-4 17:00
@编程追风梦 不用怕,有 bug 是无法运行的,他没法远程操控你,

而且也可以问 gpt

哦,对啊,但是我不能放过他,我得把他禁言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 09:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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