python 如何在matplotlib.pyplot的fill_between函数中使用where条件?

7nbnzgx9  于 2023-10-14  发布在  Python
关注(0)|答案(1)|浏览(106)
plt.plot(ages_x, py_dev_y, color = 'green', label = "Python")
plt.plot(ages_x, js_dev_y, color = 'red', label = "JavaScript")
plt.plot(ages_x,average_dev,color='black', linestyle = '--', label="All dev")
plt.fill_between(ages_x, js_dev_y, average_dev, where=(js_dev_y <= average_dev), interpolate=True, alpha = '0.25')
plt.title("Average salary of diff profession")
plt.xlabel("Age")
plt.ylabel("Average salary(USD)")
plt.tight_layout()
plt.legend()
plt.show()

plt.fill_between()有错误

hmmo2u0o

hmmo2u0o1#

您提供的代码在概念上似乎正确,可以在matplotlib中使用fill_betweenwhere参数用于指定填充应该出现的条件。
然而,有几个潜在的问题:
1.确保ages_xpy_dev_yjs_dev_yaverage_dev都是相同长度的列表或数组。如果它们不是,则在绘制或填充时会遇到问题。

  1. alpha参数应该是一个介于0(完全透明)和1(完全不透明)之间的浮点数。在你的代码中,你已经把它作为字符串'0.25'传递了。它应该是alpha=0.25(不带引号)。
    下面是我定义的数据的代码的更正版本:
import matplotlib.pyplot as plt
import numpy as np

ages_x = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]

py_dev_y = np.array([45372, 48876, 53850, 57287, 63016, 65998, 70003, 70000, 71496, 75370, 83640])
js_dev_y = np.array([37810, 43515, 46823, 49293, 53437, 56373, 62375, 66674, 68745, 68746, 74583])
average_dev = np.array([45000, 48000, 51000, 54000, 57000, 60000, 63000, 66000, 69000, 72000, 75000])

plt.plot(ages_x, py_dev_y, color = 'green', label = "Python")
plt.plot(ages_x, js_dev_y, color = 'red', label = "JavaScript")
plt.plot(ages_x, average_dev, color='black', linestyle = '--', label="All dev")

# Correct the alpha parameter
plt.fill_between(ages_x, js_dev_y, average_dev, where=(js_dev_y <= average_dev), interpolate=True, alpha=0.25)

plt.title("Average salary of diff profession")
plt.xlabel("Age")
plt.ylabel("Average salary(USD)")
plt.tight_layout()
plt.legend()
plt.show()

如果在进行此更改后,您仍然面临错误,请提供您看到的确切错误消息,并且了解您正在使用的Python和matplotlib的版本会很有帮助。

相关问题