python - 使用数据框列作为带有 matplotlib 的图形线的颜色
问题描述
我画了一个这样的图表:
p1=ax1.plot(df['timestamp'], df['break_even'], color='blue', zorder = 0)
但我希望该行根据另一列更改颜色:
p1=ax1.plot(df['timestamp'], df['break_even'], color=df['trade_color'], zorder = 0)
这行不通,我得到:
ValueError: Invalid RGBA argument: 0 red
1 green
2 red
3 red
4 green
...
如何做到这一点?
这是一个测试示例:
data = [[1, 10, 'red'], [2, 15, 'green'], [3, 14, 'blue']]
df = pd.DataFrame(data, columns = ['x', 'y', 'color'])
fig, ax = plt.subplots()
ax.plot(df['x'], df['y'], color='darkorange', zorder = 0)
这会起作用,但是:
ax.plot(df['x'], df['y'], color=df['color'], zorder = 0)
将不会。如何让每个线段使用我需要的颜色?(如果有区别,我只有两种颜色)
解决方案
每次只需使用您想要的颜色绘制数据框的一部分:
import pandas as pd
import matplotlib.pyplot as plt
data = [[1, 10, 'red'], [2, 15, 'green'], [3, 14, 'blue']]
df = pd.DataFrame(data, columns = ['x', 'y', 'color'])
fig, ax = plt.subplots()
for i in df.index:
'''
Get two rows each time, every row has a point (x, y)
Two points can draw a line, use the color defined by first row
'''
partial = df.iloc[i:i+2, :]
ax.plot(partial['x'], partial['y'], color=partial['color'].iloc[0], zorder = 0)
plt.show()
推荐阅读
- visual-studio-code - 启动非默认终端的快捷键?
- loops - Ansible:从多个堆栈中获取 instance_ids
- powershell - 事件 ID 计数和警告错误的 Powershell 命令
- python - 如何在 android studio 中使用 .h5 文件?
- c# - 如何从控制器更新 KendoUI Grids 数据源?
- python - Docker 健康检查总是返回不健康
- c++ - C ++中的线程函数参数问题
- django - 本地窗口 - 服务器 Ubuntu,git push live no putty
- node.js - 读取/设置套接字头信息 [Node.js]
- jhipster - 生成器-jhipster-blueprint “jhContext.setupClientOptions 不是函数”