我在同一个图上画了两条线,是从熊猫数据框画出来的。你知道吗
我想在它们之间填充一个渐变/彩色地图。你知道吗
我知道我可以用cmap来做这件事,但它对我不起作用(见下面的代码)。你知道吗
我发现一般的例子是在x轴和直线之间填充,我不想这样,而且我对最简单的解决方案也感兴趣,因为我是一个乞丐在这个和复杂的,虽然也许更好的代码只会让它更混乱诚实。你知道吗
填充为纯蓝色的代码:
import matplotlib.pyplot as plt
import pandas as pd
ax = plt.gca()
df0.plot(kind='line', x='something', y='other', color='orange', ax=ax, legend=False, figsize=(20,10))
df1.plot(kind='line', x='something', y='other2', color='c', ax=ax, legend=False, figsize=(20,10))
ax.fill_between(x=df0['daysInAYear'], y1=df0['other'], y2 = df1['other2'], alpha=0.2, cmap=plt.cm.get_cmap("winter"))
plt.show()
编辑/更新:数据示例 其他总是>;=other2
other other2 something (same for both)
15.6 -16.0 1
13.9 -26.7 2
13.3 -26.7 3
10.6 -26.1 4
12.8 -15.0 5
我想把馅料从上面的橙色调成下面的蓝色
让我们试试这样的方法:
输出:
编辑
为了回答编辑后的问题,这里有一种替代方法,它垂直地进行渐变,但不使用
imshow
。你知道吗这里的想法与我最初的答案相似,只是梯形被分成
nc
个部分,每个部分分别着色。这种方法的优点是可以正确地缩放不同的y1[ii]
,y2[ii]
距离,如比较中所示然而,它确实有许多缺点,比
imshow
或水平梯度法慢得多,并且不能正确处理“交叉”。你知道吗原始
这有点像黑客,部分基于this question中的答案。它似乎工作得相当好,但在沿
x
轴的密度较高时效果最好。其思想是分别为对应于x
对的每个梯形fill_between
调用[x[ii], x[ii+1]]
。下面是一个使用一些生成的数据的完整示例这可以推广到一个二维的颜色网格,但需要非平凡的修改
相关问题 更多 >
编程相关推荐