如何使 matplotlib 图表看起来像这样专业完成? [关闭]

2024-03-29

默认的 matplotlib 图表看起来确实没有吸引力,甚至不专业。我尝试了几个包,包括seaborn和prettyplotlib,但这两个都只是勉强改进了样式。

到目前为止,我已经开始使用 seaborn 包:

下面是我正在寻找的外观,与上面相差甚远:

请注意第二个示例中的以下优点:

  1. 图表下方的区域充满了更赏心悦目的颜色。
  2. 图表线是思考者并且很好地脱颖而出。
  3. 轴线是思想家,并且再次出色地脱颖而出。
  4. 曲线下方的区域是透明的。
  5. X 轴刻度线更密集。

我的问题是:您是否认为上面是我可以在 matplotlib 中快速使用的某种流行主题或风格?或者我是否可以从某个包中使用?如果做不到这一点,是否有办法将此样式设置为我的全局偏好?如果做不到这一点,是否有可能在 matlibplot 中做到这一点?

Thanks!


这确实是一个品味问题,也是一个目标受众的问题。matplotlib试图为科学目的提供清晰的插图。这必然是一种妥协,并且插图不是您会在杂志上打印或在广告中展示的东西。

有一些好消息和一些坏消息matplotlib在这个意义上。

坏消息:

  • 没有任何一个神奇的命令或包可以创建美丽的情节matplotlib.

好消息:

  • 有一些简单的方法可以更改默认设置,请参阅:http://matplotlib.org/users/customizing.html http://matplotlib.org/users/customizing.html
  • 对象模型使用户能够更改几乎所有内容并引入复杂的新功能。
  • 源代码是可用的,甚至用户可以很容易地更改它。

在我看来,最困难的事情是决定你想要什么。然后做你想做的事会更容易,即使一开始有一个陡峭的学习曲线。

举个例子:

import numpy as np
import matplotlib.pyplot as plt


# create some fictive access data by hour
xdata = np.arange(25)
ydata = np.random.randint(10, 20, 25)
ydata[24] = ydata[0]

# let us make a simple graph
fig = plt.figure(figsize=[7,5])
ax = plt.subplot(111)
l = ax.fill_between(xdata, ydata)

# set the basic properties
ax.set_xlabel('Time of posting (US EST)')
ax.set_ylabel('Percentage of Frontpaged Submissions')
ax.set_title('Likelihood of Reaching the Frontpage')

# set the limits
ax.set_xlim(0, 24)
ax.set_ylim(6, 24)

# set the grid on
ax.grid('on')

(只是评论:原始图像中的 X 轴限制没有考虑数据的周期性。)

这会给我们这样的东西:

很容易理解,我们需要做很多改变才能向缺乏工程意识的观众展示这一点。至少:

  • 使填充透明且颜色不那么刺眼
  • 让线条变粗
  • 改变线条颜色
  • 向 X 轴添加更多刻度
  • 更改标题的字体

# change the fill into a blueish color with opacity .3
l.set_facecolors([[.5,.5,.8,.3]])

# change the edge color (bluish and transparentish) and thickness
l.set_edgecolors([[0, 0, .5, .3]])
l.set_linewidths([3])

# add more ticks
ax.set_xticks(np.arange(25))
# remove tick marks
ax.xaxis.set_tick_params(size=0)
ax.yaxis.set_tick_params(size=0)

# change the color of the top and right spines to opaque gray
ax.spines['right'].set_color((.8,.8,.8))
ax.spines['top'].set_color((.8,.8,.8))

# tweak the axis labels
xlab = ax.xaxis.get_label()
ylab = ax.yaxis.get_label()

xlab.set_style('italic')
xlab.set_size(10)
ylab.set_style('italic')
ylab.set_size(10)

# tweak the title
ttl = ax.title
ttl.set_weight('bold')

现在我们有:

这与问题中的情况并不完全一样,但一切都可以朝着这个方向调整。此处设置的许多内容都可以设置为默认值matplotlib。也许这给出了如何改变情节中的事情的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 matplotlib 图表看起来像这样专业完成? [关闭] 的相关文章

随机推荐

  • 替换字符串 php 中的最后一个斜杠

    我很难绕过正则表达式 我正在尝试删除字符串中的最后一个正斜杠 public url https api mongohq com 我的目的是删除最后一个正斜杠并将其替换为其他内容 我想我可以用preg replace但我找不到正确的模式来做到
  • 如何获取git中索引的树哈希?

    使用 git 如何获取分阶段更改的树哈希 也就是说 如果我提交了更改 提交的树哈希 不是提交哈希 将是什么 最简单的方法是提交树 git commit tree 解释 您不必进行完整的提交 当然这也是可行的 你只需要snapshot提交将会
  • 何时使用 EventListenerList 而不是一般的侦听器集合

    当我学习如何在 Java 中触发事件时 我开始熟悉 EventListenerList 当我创建自己的侦听器时 我编写侦听器 使其扩展 EventListener 将它们存储在 EventListenerList 中 并且我的 fire 方
  • T4 模板和 Visual Studio 项模板

    是否可以创建从 T4 模板生成的 Visual Studio 项模板 我的 google fu 似乎不够强大 无法给出答案 是的 你需要使用GAX http msdn microsoft com en us teamsystem aa718
  • Flutter 容器:无法同时提供颜色和装饰

    我想在容器周围绘制边框并为背景着色 Widget bodyWidget return Container color Colors yellow decoration BoxDecoration border Border all colo
  • 计算 Javascript 的循环复杂度 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何工具可用于计算 Javascript 中的圈复杂度 我过去在处理服务器端代码时发现它是一个非常有用的指标 并且希望能够将它用于我
  • 包含脚本、延迟或在 DOMContentLoaded 事件上执行的最佳实践?

    所以 我知道脚本执行的一般顺序 根据this https javascript info script async defer defered 脚本在之前执行DOMContentLoaded事件被触发 但不会阻止页面和后续脚本的加载 除非它
  • Xcode 4.0.2 启动时崩溃

    Xcode 在启动时崩溃 我不知道为什么 我下载了 4 0 2 iOS SDK 4 3 并安装了它 然后我尝试打开它 但它在启动时崩溃了 这是与崩溃相关的控制台日志 enter cdyld Library not loaded System
  • Auth0 - Django 和石墨烯

    我目前正在使用 Graphql 和 Django Graphene JWT 我使用 django 作为后端 所有请求均通过如下所示的令牌进行身份验证 我有一个为 graphql 创建身份验证令牌的模式 目前如下所示 class Mutati
  • 在 Java 中通过 JDBC 查询速度慢,但在其他系统(TOAD)中则不然

    您好 我有一个对 Oracle 系统的查询 其中涉及一个视图 该视图通过将 TO NUMBER 应用于表主键来连接其他表 如果我使用 TOAD 进行查询 查询速度非常快 800 个寄存器 1 秒 如果我通过 JDBC 使用字符串文字 不是参
  • 如何将MySQL表中的日常记录存储到另一个表中?

    朋友们 我创建了一个 mysql 表来获取我网站的页面访问量 我的桌子是这样的 statistics table stat id visited page visit count 每次访问 visit count 都会加一 这很完美 但现在
  • 如何更改JavaFX中的突出显示颜色?

    如何更改JavaFX中的突出显示颜色 通常它是带有渐变的蓝色 但我想要绿色突出显示 我已经尝试过以下方法 root fx shadow highlight color CCFF99 感谢帮助 Look at 里海 css JavaFX 2
  • EF 迁移:回滚上次应用的迁移?

    这看起来是一个非常常见的任务 但我找不到简单的方法来完成它 我想撤消上次应用的迁移 我本来期望一个简单的命令 比如 PM gt Update Database TargetMigration 1 相反 我能想到的是 PM gt Get Mi
  • 如何增加 Oxyplot 中轴的绘图区域?

    我正在编写一个实用程序来通过电子邮件发送堆积柱形图 该柱形图显示每个人的任务 现在我正在使用PngExporter in OxyPlot WindowsForms导出绘图 但我似乎无法弄清楚如何控制图像的下限 用户名可能很长并且会溢出到外面
  • 通过我的应用程序更新和删除 Android 中的日历事件

    谁能告诉我我该怎么做修改 编辑 和删除android日历事件这是用户自己使用我的 Android 应用程序添加的 我已经尝试了很多 但没有一个对我来说效果很好 我是第一次处理这些日历 我们有解决方案吗 看看这个问题 堆栈溢出 https s
  • android - 上传文件时发送参数

    我有这段代码http pastebin com VrMNuxcv http pastebin com VrMNuxcv它成功地将文件从我的 android 上传到服务器 不过 我希望能够随它一起发送几个字符串参数 如果可能的话 您能否告诉我
  • 在 html 字符串中渲染 ViewComponent

    假设我有一个名为 MyComponent 的 ViewComponent 从 ASP NET Core 1 1 开始 我可以通过在 razor view cshtml 页面中编写此 ViewComponent 来呈现此 ViewCompon
  • 在 Scilab 中求解 ODE

    我正在尝试做一些电路分析Scilab通过解决一个ODE 但我需要改变一个ODE取决于函数的当前值 我已经实施了该解决方案Scala using RK4方法并且效果完美 现在我正在尝试做同样的事情 但是使用标准函数Scilab 但它不起作用
  • 如何在 Delphi 7 中使用 Indy 10 进行 NTLM 身份验证?

    我想在 Delphi 7 中使用 Indy 10 组件进行 NTLM 身份验证 这是我的源代码 uses Windows Messages SysUtils Variants Classes Graphics Controls Forms
  • 如何使 matplotlib 图表看起来像这样专业完成? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 默认的 matplotlib 图表看起来确实没有吸引力 甚至不专业 我尝试了几个包 包括seaborn和prettyplotlib 但这两个都只