matplotlib我正在尝试使用'sxkcd包在黑色背景下绘制一个图。然而,xkcd似乎在文本和线条周围添加了一种白色轮廓线。在白色背景上你看不到这个白框,但在黑色背景上它真的很烦人。
有谁知道如何解决这个问题?也许可以选择如何更改白色轮廓线以具有背景颜色?
最小的例子:
import numpy as np
import matplotlib.pyplot as plt
plt.style.use(['dark_background'])
plt.xkcd()
plt.rcParams['figure.facecolor'] = 'black'
x = np.linspace(-5, 5)
plt.figure()
plt.plot(x, x**2)
plt.text(0, 10, "Text", color='r', fontsize=20)
plt.xlabel("$x$" )
plt.ylabel("$f(x)$")
plt.show();
Run Code Online (Sandbox Code Playgroud)
:
编辑:我Python 3.5.4在我的 jupyter 笔记本中使用包:
matplotlib==2.2.2,后端='TkAgg'jupyter==1.0.0notebook==5.5.0请注意,当将上述代码作为脚本运行时,我根本没有得到 xkcd 图。仅从 jupyter 笔记本或命令行我才能得到所描述的行为。
我想在打开乳胶的情况下在一些图例标签中插入一些前导空格(问题与其他类型的标签相同)。但是,我输入的任何前导空格都将被忽略(请参阅 MWE 和下图)。一个丑陋的解决方法是输入领先.(受此问答启发)。但这并不漂亮。
知道我怎样才能让它正常工作吗?它甚至可以完成吗?或者我应该考虑提出 matplotlib 的问题吗?
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'serif'
plt.rcParams['text.usetex'] = True
plt.rcParams['mathtext.fontset'] = 'cm'
fig = plt.figure(figsize=(4, 3))
plt.plot([], label="~ tilde")
plt.plot([], label="\, comma")
plt.plot([], label="\quad quad")
plt.plot([], label="\hphantom{whitespace} hphantom")
plt.plot([], label=".\hphantom{whitespace} ugly leading dot")
plt.xlabel("\hphantom{whitespace} xlabel")
plt.legend()
Run Code Online (Sandbox Code Playgroud)
当前情况:
我有多组线,其中同一组中的线会根据某些特定于组的参数而变化。我根据此参数为同一组内的每行分配一种颜色表中的颜色,并对每个组使用不同的颜色表。
现在,我想在图上添加图例,每组线有一个条目。

仅适用于一组线的解决方案:
如果我只有一组线,则最好的标注方法是按照答案的建议添加色条:Matplotlib:将色条添加到不可映射的对象。
如何最好地对多组线执行此操作?
因为我有多组这样的线,所以我不想为每个新参数添加一个颜色条。相反,我宁愿在图例中放置填充有对应色图的色块(作为一种迷你色条)。
最小的工作示例:
在下面的内容中,您可以找到当前情况的最小工作示例。但是请注意,我在很大程度上简化了隐藏参数依赖性的行的计算。因此,我的“参数” param就是我要遍历的索引。我的实际代码根据具有更复杂功能的模型参数来计算x和y值。因此,param_max此处的最大值对于每组线都是相同的,尽管实际上并非如此。
import numpy as np
import matplotlib.pyplot as plt
x_array = np.linspace(1, 10, 10)
y_array = x_array
param_max = x_array.size
cmaps = [plt.cm.spring, plt.cm.winter] # set of colormaps
# (as many as there are groups of lines)
plt.figure()
for param, (x, y) in enumerate(zip(x_array, y_array)):
x_line1 = np.linspace(x, 1.5 * x, 10)
y_line1 = np.linspace(y**2, y**2 - x, 10)
x_line2 = np.linspace(1.2 …Run Code Online (Sandbox Code Playgroud)