python - Matplotlib 中多个散点图的彩色标记日期
问题描述
我有 3 个数据框,它们有 3 个我想映射到散点图中的特征:
Date Energy Cost
我需要创建一系列散点图,绘制能源和成本,但在日期列中按年份进行颜色编码。
日期采用日期时间格式,持续 4 年,如下所示:
2015-12-30 00:00:00
2016-20-12 00:00:00
etc...
我知道我可以绘图plt.scatter(data[:], data[:].... c=data[:])
但是无法弄清楚如何专门针对时间间隔正确格式化它,以使每种颜色在 4 年中的每一年都不同。
解决方案
用于map
创建可以作为颜色传递的系列。
MCVE
import pandas as pd
import numpy as np
np.random.seed(123)
dates = pd.date_range('2014-01-01', '2017-12-31', freq='12D')
df = pd.DataFrame({'Date': dates,
'Energy': np.random.randint(1, 1000, len(dates)),
'Cost': np.random.randint(10000, 15000, len(dates))})
代码
color_d = {2014: 'red', 2015: 'blue', 2016: 'orange', 2017: 'black'}
df.plot.scatter(x='Energy', y='Cost', c=df.Date.dt.year.map(color_d))
或者使用 matplotlib
import matplotlib.pyplot as plt
plt.scatter(df.Energy.values, df.Cost.values, c=df.Date.dt.year.map(color_d))
_ = plt.xlabel('Energy')
_ = plt.ylabel('Cost')
plt.show()
推荐阅读
- javascript - Bootstrap Carousel 中的项目数返回 0
- java - 如何从另一个 LocalDate 中减去一个 localDate
- printing - 我正在尝试获取行空间但不想使用 print() 命令
- javascript - 通过 JS 提示输入的问题
- c# - 如何使用 C# 传递 Double 类型的参数显示 BoxView?
- math - 确定一个点是否位于中心点的两个方位之间
- java - 我正在编写一个 javafx 自定义 LoginModule 并收到以下关于 javafx 权限的 AccessControlException。这是政策文件问题吗?
- mongodb - 用于过滤数组的聚合管道
- arrays - Kotlin:初始化二维数组
- javascript - 如何从功能组件更新类组件的状态