python - matplotlib 基于额外变量绘制(不是散点)颜色

标签 python matplotlib plot

美好的一天,

我试图将两个数组( timesinlocations )绘制为散点。然而,因为timesin是一个日期时间对象(我只想要时间),我发现我只能使用 pyplot.plot() 正确绘制它,不是pyplot.scatter() 。当我想用第三个变量 idx 为该图上的点着色时,问题就出现了。 。我知道pyplot.scatter()有能力做到这一点quite easily ,但我不知道如何使用 pyplot.plot() 来做到这一点.

我的代码摘录:

import os
import tempfile
from datetime import datetime
import numpy as np
os.environ['MPLCONFIGDIR'] = tempfile.mkdtemp()

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

pp = PdfPages('output.pdf')
names = ['WestHall', 'Elevator', 'EastHall', 'MathLounge']
locations = np.arange(4)+1
plt.scatter(timesin, locations, c=idx, marker="o")
plt.xlabel("Time of day")
plt.ylabel("Location")
plt.yticks(np.arange(4)+1, names)
plt.gcf().autofmt_xdate()
pp.savefig()
plt.close()
pp.close()

当我尝试此操作时,出现错误,因为它尝试解释 idx作为RGBA:

ValueError: to_rgba: Invalid rgba arg "[...]"
number in rbg sequence outside 0-1 range

我如何让它解释idx作为条件着色而不使用 pyplot.scatter()

谢谢

更新:

根据Hun的建议,我实际上可以使用pyplot.scatter()在这种情况下,通过使用 matplotlibs 日期库将日期时间对象转换为数字。因此,弄清楚如何使用 pyplot.plot()条件着色是不必要的。

最佳答案

如果使用 plt.scatter() 会更容易。但是您需要将日期时间转换为 scatter() 可以理解的内容。有一种方法可以做到。

>>> dt # datetime numpy array
array(['2005-02-01', '2005-02-02', '2005-02-03', '2005-02-04'], dtype='datetime64[D]')

>>> dt.tolist() # need to be converted to list
[datetime.date(2005, 2, 1), datetime.date(2005, 2, 2), datetime.date(2005, 2, 3), datetime.date(2005, 2, 4)]

# convert the list to internal time information for matplotlib. But this is float.
>>> dt1 = matplotlib.dates.date2num(dt.tolist())
array([ 731978.,  731979.,  731980.,  731981.])

有了这个 dt1,你可以使用 plt.scatter()

关于python - matplotlib 基于额外变量绘制(不是散点)颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534263/

相关文章:

python - 更改 matplotlib 轴中的 x 轴刻度标签

python - 如何显示 Seaborn pairplot() 或 PridGrid() 图表的标题

r - 将单独的线添加到 facet_wrapped 图

python - 如何使用 Selenium 和 Python 登录 Wells Fargo 帐户

python - 为什么感知器学习算法不收敛?

python - 哪个更糟糕——重复代码或双重尝试/异常(exception)?

r - R 上的 geom_vline 不适用于在 ggplot 图上添加垂直线

python - 提供唯一 ID 时超出最大递归深度

python - 在 python 中使用 cv2.calcHist 获取目录中多个图像的颜色直方图

r - 使用 R 中的美国各州数据绘制(填充颜色) map