use*_*386 184 python matplotlib
我在matplotlib中制作散点图,需要将实际绘图的背景更改为黑色.我知道如何使用以下方法更改绘图的面部颜色:
fig = plt.figure()
fig.patch.set_facecolor('xkcd:mint green')
Run Code Online (Sandbox Code Playgroud)
我的问题是这会改变剧情周围空间的颜色.如何更改绘图的实际背景颜色?
Nic*_*k T 186
使用对象的set_facecolor(color)方法axes,您已创建以下方法之一:
您一起创建了一个图形和轴/ es
fig, ax = plt.subplots(nrows=1, ncols=1)
Run Code Online (Sandbox Code Playgroud)你创建了一个数字,然后是轴/ es
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1) # nrows, ncols, index
Run Code Online (Sandbox Code Playgroud)你使用了有状态的API(如果你做的不仅仅是几行,特别是如果你有多个图,那么上面面向对象的方法会让生活更轻松,因为你可以参考特定的图形,在某些轴上绘图,并自定义其一)
plt.plot(...)
ax = plt.gca()
Run Code Online (Sandbox Code Playgroud)然后你可以使用set_facecolor:
ax.set_facecolor('xkcd:salmon')
ax.set_facecolor((1.0, 0.47, 0.42))
Run Code Online (Sandbox Code Playgroud)
作为什么颜色的复习:
matplotlib.colors
Matplotlib识别以下格式以指定颜色:
[0, 1](例如,(0.1, 0.2, 0.5)或(0.1, 0.2, 0.5, 0.3))中的浮点值的RGB或RGBA元组;- 十六进制RGB或RGBA字符串(例如,
'#0F0F0F'或'#0F0F0F0F');[0, 1]用于灰度级的浮点值的字符串表示(例如'0.5');- 中的一个
{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'};- 一个X11/CSS4颜色名称;
- 来自xkcd颜色调查的名称; 以
'xkcd:'(例如'xkcd:sky blue')为前缀;- 其中一个是
{'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'}'T10'分类调色板中的Tableau颜色(这是默认的颜色循环);- "CN"颜色规范,即"C"后跟一个数字,这是默认属性循环(
matplotlib.rcParams['axes.prop_cycle'])的索引; 索引在艺术家创建时发生,如果循环不包括颜色,则默认为黑色.除"CN"之外的所有颜色的字符串规范都不区分大小写.
小智 40
像这样的东西?使用axisbg关键字subplot:
>>> from matplotlib.figure import Figure
>>> from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
>>> figure = Figure()
>>> canvas = FigureCanvas(figure)
>>> axes = figure.add_subplot(1, 1, 1, axisbg='red')
>>> axes.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x2827e50>]
>>> canvas.print_figure('red-bg.png')
Run Code Online (Sandbox Code Playgroud)
(当然,不是散点图,也不是黑色背景.)

小智 38
一种方法是在脚本中手动设置轴背景颜色的默认值(请参阅自定义matplotlib):
import matplotlib.pyplot as plt
plt.rcParams['axes.facecolor'] = 'black'
Run Code Online (Sandbox Code Playgroud)
这与Nick T的方法形成对比,后者改变了特定axes对象的背景颜色.如果您正在制作具有相似样式的多个不同图并且不想继续更改不同axes对象,则重置默认值非常有用.
注意:相当于
fig = plt.figure()
fig.patch.set_facecolor('black')
Run Code Online (Sandbox Code Playgroud)
从你的问题是:
plt.rcParams['figure.facecolor'] = 'black'
Run Code Online (Sandbox Code Playgroud)
Lei*_*igh 19
更简单的答案:
ax = plt.axes()
ax.set_facecolor('silver')
Run Code Online (Sandbox Code Playgroud)
Mat*_*711 12
如果你已经有了axes对象,就像在Nick T的回答中一样,你也可以使用
ax.patch.set_facecolor('black')
Run Code Online (Sandbox Code Playgroud)
Flo*_*nks 11
最简单的事情可能是在创建绘图时提供颜色:
fig1 = plt.figure(facecolor=(1, 1, 1))
Run Code Online (Sandbox Code Playgroud)
或者
fig1, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, facecolor=(1, 1, 1))
Run Code Online (Sandbox Code Playgroud)
其他答案中的一个建议是使用ax.set_axis_bgcolor("red").但是这已被弃用,并且不适用于MatPlotLib> = v2.0.
还有建议使用ax.patch.set_facecolor("red")(适用于MatPlotLib v1.5和v2.2).虽然这很好用,但是使用更简单的v2.0 +解决方案
ax.set_facecolor("red")| 归档时间: |
|
| 查看次数: |
248680 次 |
| 最近记录: |