鱼C论坛

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

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

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

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

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

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

以下是修改代码的示例:


  1. import numpy as np
  2. import matplotlib.pyplot as plt

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

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

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

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

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

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

  27. # 显示图形
  28. plt.show()
复制代码


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

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

使用道具 举报

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

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

下面是修改后的代码示例:

  1. python
  2. import numpy as np
  3. import matplotlib.pyplot as plt

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

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

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

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

  15. plt.show()
复制代码


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

使用道具 举报

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

首先,将以下代码段替换掉原来的绘图代码段:
  1. x = np.arange(12)
  2. y1 = [5000, 7000, 7000, 6000, 6000, 12000, 4000, 5000, 5000, 4000, 14000, 5000]  # 预期业绩
  3. y2 = [4139, 8671, 8027, 7743, 6219, 16520, 5120, 6039, 5521, 4021, 18370, 6000]  # 实际业绩
  4. plt.fill_between(x, y1, y2, where=(y1 > y2), facecolor='red', alpha=0.3, interpolate=True)
  5. 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()`函数来绘制矩形。

以下是修改代码的示例:


  1. import numpy as np
  2. import matplotlib.pyplot as plt

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

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

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

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

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

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

  27. # 显示图形
  28. 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-5-20 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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