15

直到最近,我一直在使用 Mathematica 进行绘图。虽然这真的很痛苦,而且一切都必须手动完成,但结果非常接近我想要的。一个例子如下:

Mathematica 示例图

我真的很喜欢颜色条背景中的灰色圆角矩形。虽然必须在 Mathematica 中手动调整所有内容,但 matplotlib 更加自动化并且已经产生了不错的结果。

Mathematica 示例图

但是我还有两个问题:

  1. 我不知道如何在背景中做一个圆角矩形。我查看了 fancybbox 补丁,但没有让它像我想要的那样与颜色条一起工作。获得 Mathematica 盒子之类的东西的最佳方法是什么?对于情节中的图例,似乎有一个花哨的 bbox 选项......但不适用于彩条
  2. 当我使用“较小的符号”(<)时,颜色条的标签向右移动太远。我该如何调整它(甚至可能像 Mathematica 图中的“中间”数字)?

我期待着任何指向正确方向的建议:)。

4

1 回答 1

29

对于第二个问题:您可以使用负值labelpad将标签移回刻度标签,如下所示:

import numpy as np
import matplotlib.pyplot as plt

data = np.linspace(0, 10, num=256).reshape(16,16) 

cf = plt.contourf(data, levels=(0, 2.5, 5, 7.5, 10))
cb = plt.colorbar(cf)

cb.set_ticklabels([r'$<10^{0}$', 1, 2, r'$10^{14}$', r'$10^{14}+12345678$'])
cb.set_label(r'$n_e$ in $m^{-3}$', labelpad=-40, y=0.45)

plt.show()

使用参数y,您还可以向上或向下移动标签以获得更好的对称性。

的参数labelpad以点(1/72 英寸)给出。y接受值[0, 1]0.0是下边界和1.0上边界。

结果:

脚本输出

于 2013-08-24T11:30:02.140 回答