全局更改matplotlib默认样式

时间:2018-03-29 19:52:59

标签: python matplotlib

我有一个问题:如何在matplotlib上使用默认样式(因为我喜欢它)但只更改一个参数?这是一个例子: 使用默认的matplotlib样式或" calssic"我可以通过更新rcParams来全局更改字体大小:

import matplotlib.pyplot as plt
plt.style.use('seaborn')
plt.rcParams.update({'font.size': 18.0})

x = [0, 1, 2, 3]
y = [0, 1, 4, 9]

fig, ax0 = plt.subplots()
ax0.plot(x, y)
ax0.set_xlabel('data x')
ax0.set_ylabel('data y')
plt.show()

output

如果相反,我会在开头选择不同的默认样式:

plt.rcParams.update({'font.size': 18.0})

the font size remains of the default value 它并没有像那样工作;

font.size

就像library(tidyverse) library(rvest) data_dir <- "bat_data-html/" # Step 1: Create list of links to listings ---------------------------- base_url <- "https://" pages <- read_html(file.path(base_url,"/auctions/")) %>% html_nodes(".auctions-item-title a") %>% html_attr("href") %>% file.path pages <- head(pages, 3) # use a subset for testing code # Step 2 : Save auction pages locally --------------------------------- dir.create(data_dir, showWarnings = FALSE) p <- progress_estimated(length(pages)) # Download each auction page walk(pages, function(url){ download.file(url, destfile = file.path(data_dir, basename(url)), quiet = TRUE) p$tick()$print() }) 行不存在一样。 现在一个简单的解决方案是定义一个具有特定字体大小的全局变量,并手动将其添加到绘图的每个元素,但它对我来说听起来并不聪明。如何全局修改fontsize的任何其他想法?它实际上是可能的还是我只需要处理它并自己创建一个matplotlib样式文件?

编辑: 通过更仔细的思考,遵循DavidG评论,我尝试了不同的风格:ggplot和fivethirtyeight甚至是seaborn-dark,我的代码工作(正如我所料)。这个问题只与seaborn风格有关(我不幸选择)..

1 个答案:

答案 0 :(得分:0)

刻度标签的大小由xtick.labelsizeytick.labelsize rcParams决定。
如果您打印出来,则会看到10(pt)设置为seaborn样式。因此,如果您将其更改为18,则会到达所需的地块。

import matplotlib.pyplot as plt
plt.style.use('seaborn')
plt.rcParams.update({'font.size': 18,
                     'xtick.labelsize' : 18,
                     'ytick.labelsize' : 18})

# ....

enter image description here

如您所见,轴标签仍然很小。那是因为我们还没有设置axes.labelsize参数。

那么为什么seaborn-dark只能按预期工作,只需设置'font.size'? 答案是有两种方法可以指定字体大小。一个是像上面这样的点的绝对数字,另一个是使用相对值。那些是xx-small, x-small, small, medium, large, x-large, xx-large, larger, or smaller。这些值与font.size中指定的大小有关。

如果是seaborn-dark样式和(希望有很多其他样式),labelsize是使用其中一个相对值设置的。在这种情况下,它是medium,这意味着正在使用font.size

您可以检查matplotlib\lib\matplotlib\mpl-data\stylelib文件夹中的样式,直接查看它们如何指定相应参数并找出它们之间的差异。