我刚开始使用pandas/matplotlib替代Excel来生成堆积条形图.我遇到了一个问题
(1)默认色图中只有5种颜色,所以如果我有超过5种颜色,则重复颜色.如何指定更多颜色?理想情况下,具有开始颜色和结束颜色的渐变,以及在两者之间动态生成n种颜色的方法?
(2)颜色在视觉上不是很悦目.如何指定n种颜色的自定义组?或者,渐变也可以.
以下两个例子说明了上述两点:
4 from matplotlib import pyplot
5 from pandas import *
6 import random
7
8 x = [{i:random.randint(1,5)} for i in range(10)]
9 df = DataFrame(x)
10
11 df.plot(kind='bar', stacked=True)
Run Code Online (Sandbox Code Playgroud)
输出是这样的:

如何为matplotlib制作的图形设置一组默认颜色?我可以像这样设置一个特定的颜色图
import numpy as np
import matplotlib.pyplot as plt
fig=plt.figure(i)
ax=plt.gca()
colormap = plt.get_cmap('jet')
ax.set_color_cycle([colormap(k) for k in np.linspace(0, 1, 10)])
Run Code Online (Sandbox Code Playgroud)
但是有没有办法为所有情节设置相同的颜色集,包括子图?
我正在绘制x,y空间中的一系列曲线,其中每条曲线由标量值z标识.我希望将z值映射到每条线的颜色,但是大多数色彩图/颜色表都是在考虑图像的情况下构建的(例如,在白色背景上,灰度色彩图隐藏了z的一个极端).
彩虹/光谱/喷射色图 - 这是许多绘图程序中的默认值 - 更好,但是白色背景上的黄色/青色线的可见性差,蓝色/青色/绿色之间的色彩对比度差.Borland和Taylor进一步讨论了彩虹色图的这个问题和其他问题:
有人能推荐更好的东西吗?我正在寻找的一些方面:
编辑/更新:每个endolith的请求,这是一个简化的示例图:
"灰色"色图和它的亲戚(从黑色开始到白色结束)是为图像设计的,但是当用于在白色背景上绘制线条或点时,有些将很难看到或看不见."jet"色图和它的光谱亲属通常也有黄色,绿色或其他颜色,很难在白色背景上看到.
这是一个准系统的例子:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')
# axes
for d in {f, t}:
d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)
f.dist = t.dist = 5.2 # 10 is default
plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')
r = 6
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])
t.set_xlim3d([-r, …Run Code Online (Sandbox Code Playgroud)