【问题标题】:How to plot below x axis area with a different color in python?如何在python中使用不同颜色的x轴区域下方绘制?
【发布时间】:2021-02-22 10:17:21
【问题描述】:

我正在用 python 绘制时间序列,为了更好地可视化,我想在轴区域下方绘制不同颜色的图。下面是我正在使用的代码。

import matplotlib.pyplot as plt
plt.plot(list2,spi1,color = 'black')
plt.ylabel('Standardized precipitation index')
plt.xlabel('Time (years)')
plt.show()

请帮我改正。 这是情节-

【问题讨论】:

  • “轴下区域”是什么意思?是否要将低于零的值绘制为红色?
  • 是的,我希望用不同的颜色绘制负值,而不是散点图。如果该系列中有负值,则使用从该点传入和传出的线的线图在 x 轴下方形成一个区域。我希望该区域具有不同的颜色,而正区域具有不同的颜色。谢谢
  • 有一个例子展示了如何根据另一个变量为线条着色:matplotlib.org/gallery/lines_bars_and_markers/…

标签: python pandas matplotlib time-series


【解决方案1】:

我已经解决了 plt.fill_between 库的问题。下面是代码和正确的图表。感谢大家的快速回复和热心帮助。

y1positive=np.array(spi1)>=0
y1negative = np.array(spi1)<=0
plt.fill_between(list2,spi1,y2=0,where=y1positive,
color='green',alpha=0.5,interpolate=False)
plt.fill_between(list2,spi1,y2=0,where=y1negative,
color='red',alpha=0.5,interpolate=False)

【讨论】:

  • 谢谢。这正是我想要绘制的内容
【解决方案2】:

如果你只想要情节图像而不关心背后的逻辑,我有一个非常糟糕的主意。

import numpy as np
import matplotlib.pyplot as plt

y = np.random.rand(30)

fig, (ax1, ax2) = plt.subplots(2, 1)
sca(ax1)
ax1.plot(y, color='k')
ax1.set(ylim=(.5, 1))
ax1.spines['bottom'].set_visible(False)

ax2.plot(y, color='r')
ax2.set(ylim=(0, .5))
ax2.spines['top'].set_visible(False)
fig.subplots_adjust(hspace=0)
plt.show()

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2020-01-17
  • 1970-01-01
  • 2020-05-24
  • 2020-11-14
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多