import pandas as pd
# test dataframe
data = {'a': range(20), 'date': pd.bdate_range('2021-01-09', freq='D', periods=20)}
df = pd.DataFrame(data)
# plot the dataframe and assign the returned axes
ax = df.plot(x='date', color='green', ylabel='values', xlabel='date', figsize=(8, 6))
# set various colors
ax.spines['bottom'].set_color('blue')
ax.spines['top'].set_color('red')
ax.spines['right'].set_color('magenta')
ax.spines['right'].set_linewidth(3)
ax.spines['left'].set_color('orange')
ax.spines['left'].set_lw(3)
ax.xaxis.label.set_color('purple')
ax.yaxis.label.set_color('silver')
ax.tick_params(colors='red', which='both') # 'both' refers to minor and major axes
海运轴级图
import seaborn as sns
# plot the dataframe and assign the returned axes
fig, ax = plt.subplots(figsize=(12, 5))
g = sns.lineplot(data=df, x='date', y='a', color='g', label='a', ax=ax)
# set the margines to 0
ax.margins(x=0, y=0)
# set various colors
ax.spines['bottom'].set_color('blue')
ax.spines['top'].set_color('red')
ax.spines['right'].set_color('magenta')
ax.spines['right'].set_linewidth(3)
ax.spines['left'].set_color('orange')
ax.spines['left'].set_lw(3)
ax.xaxis.label.set_color('purple')
ax.yaxis.label.set_color('silver')
ax.tick_params(colors='red', which='both') # 'both' refers to minor and major axes
海运数字级图
# plot the dataframe and assign the returned axes
g = sns.relplot(kind='line', data=df, x='date', y='a', color='g', aspect=2)
# iterate through each axes
for ax in g.axes.flat:
# set the margins to 0
ax.margins(x=0, y=0)
# make the top and right spines visible
ax.spines[['top', 'right']].set_visible(True)
# set various colors
ax.spines['bottom'].set_color('blue')
ax.spines['top'].set_color('red')
ax.spines['right'].set_color('magenta')
ax.spines['right'].set_linewidth(3)
ax.spines['left'].set_color('orange')
ax.spines['left'].set_lw(3)
ax.xaxis.label.set_color('purple')
ax.yaxis.label.set_color('silver')
ax.tick_params(colors='red', which='both') # 'both' refers to minor and major axes
def plotfigure(plot_fn, fig, background_col = 'xkcd:black', face_col = (0.06,0.06,0.06)):
"""
Plot Figure using plt plot functions.
Customize different background and face-colors of the plot.
Parameters:
plot_fn (func): The plot functions with necessary arguments as a lamdda function.
fig : The Figure object by plt.figure()
background_col: The background color of the plot. Supports matlplotlib colors
face_col: The face color of the plot. Supports matlplotlib colors
Returns:
void
"""
fig.patch.set_facecolor(background_col)
plot_fn()
ax = plt.gca()
ax.set_facecolor(face_col)
ax.spines['bottom'].set_color('white')
ax.spines['top'].set_color('white')
ax.spines['left'].set_color('white')
ax.spines['right'].set_color('white')
ax.xaxis.label.set_color('white')
ax.yaxis.label.set_color('white')
ax.grid(alpha=0.1)
ax.title.set_color('white')
ax.tick_params(axis='x', colors='white')
ax.tick_params(axis='y', colors='white')
使用情形定义如下
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(n_samples=50, n_classes=2, n_features=5, random_state=27)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=27)
fig=plt.figure()
plotfigure(lambda: plt.scatter(range(0,len(y)), y, marker=".",c="orange"), fig)
6条答案
按热度按时间wxclj1h51#
举一个简单的例子(使用比潜在重复问题稍微简洁的方法):
或者
tktrz96b2#
如果您有多个图形或子图要修改,使用matplotlib上下文管理器来更改颜色会很有帮助,而不是单独更改每个图形或子图。上下文管理器允许您临时更改紧随其后的缩进代码的rc参数,但不会影响全局rc参数。
这个代码片段生成两个图形,第一个图形修改了轴、刻度和刻度标签的颜色,第二个图形使用默认rc参数。
您可以输入
plt.rcParams
来查看所有可用的rc参数,并使用列表解析来搜索关键字:xuo3flqw3#
pandas.DataFrame.plot()
的用户,从 Dataframe 创建绘图时返回matplotlib.axes.Axes
。因此, Dataframe 绘图可分配给变量ax
,从而启用相关格式化方法的使用。pandas
的默认打印后端为matplotlib
。matplotlib.spines
python 3.10
、pandas 1.4.2
、matplotlib 3.5.1
、seaborn 0.11.2
中进行测试**海运轴级图
海运数字级图
yzuktlbb4#
受以前撰稿人的启发,这是一个三轴的例子。
mctunoxg5#
您还可以使用此功能在同一图形中绘制多个图,并使用相同的调色板设置它们的样式。
下面给出了一个示例
输出:
px9o7tmv6#
下面是一个实用函数,它接受一个带有必要参数的绘图函数,并用所需的背景色样式绘制图形。您可以根据需要添加更多参数。
使用情形定义如下