美文网首页
Matplotlib Tricks

Matplotlib Tricks

作者: deBroglie | 来源:发表于2019-04-18 11:46 被阅读0次

0. 绘图设置

0.0 导入函数包

import numpy as np
import matplotlib.pyplot as plt

0.1 全局设置

plt.rcParams()

0.2 设置坐标名称与图标题

plt.xlabel('Your X Label Name')
plt.ylabel('Your Y Label Name')
plt.title('Your Figure Title')

0.3 显示图例

plt.plot(loc='best')

0.4 显示栅格

# 显示默认样式
plt.grid(True)
# 显示副刻度线
plt.minorticks_on()
# 分别设置主副栅格样式
plt.grid(b=True, which='major', color='b', linestyle='-')
plt.grid(b=True, which='minor', color='r', linestyle='--')

0.5 对数坐标时设置副刻度线

fig, ax = plt.subplots()
ax.tick_params(axis='both', which='both', direction='in')
ax.xaxis.set_minor_locator(mpl.ticker.AutoMinorLocator(4))
locmaj = mpl.ticker.LogLocator(base=10, numticks=12) 
ax.yaxis.set_major_locator(locmaj)
locmin = mpl.ticker.LogLocator(base=10.0, subs=np.arange(0.1, 1, 0.1), numticks=12)
ax.yaxis.set_minor_locator(locmin)
ax.yaxis.set_minor_formatter(mpl.ticker.NullFormatter())

0.6 色谱

如果希望使用反过来的色谱,对于内置的色谱名称,在名称后面直接加上_r即可

0.7 列出本地所有可选字体

import matplotlib.font_manager
from IPython.core.display import HTML

def make_html(fontname):
    return "<p>{font}: <span style='font-family:{font}; font-size: 24px;'>{font}</p>".format(font=fontname)

code = "\n".join([make_html(font) for font in sorted(set([f.name for f in matplotlib.font_manager.fontManager.ttflist]))])

HTML("<div style='column-count: 2;'>{}</div>".format(code))

1. 直方图

1.0 统一模型

N_MC = 1000
𝝁1, 𝝈1 = 500, 200
𝝁1, 𝝈1 = 2000, 300
x1 = np.random.normal(𝝁1, 𝝈1, N_MC)
x2 = np.random.normal(𝝁2, 𝝈2, N_MC)

1.1 设置固定bin宽度

应用场景:需要将两个分布直方图作对比而画在同一坐标系中。
代码:

MIN, MAX = 0, 4096          # 设置最小值、最大值
BIN_WIDTH = 20              # 设置bin宽度
bins = np.arange(MIN, MAX + BIN_WIDTH, BIN_WIDTH)  # 生成bin宽等差数列
plt.hist(x1, bins=bins)     # 绘制直方图
plt.hist(x2, bins=bins) 

1.2 将直方图改为带误差棒的“散点”图

应用场景:多个直方图堆叠时更清晰地可视化。
代码:

BINS = 200
counts, bin_edges = np.histogram(x1, BINS)    # 获得每个bin的数据量和bin边界参数
bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2.  # 利用bin边界参数计算bin中心位置
# bin_centers = bin_edges[1:] - BIN_WIDTH / 2 # 在BIN_WIDTH已知时
errs = np.sqrt(counts)       # 误差默认取为Possion涨落,可根据实际情况调整
plt.errorbar(bin_centers, counts, yerr=errs, fmt='.')  # 绘制有误差棒的“散点”图

如果是要归一化,那么需要有一些调整(考虑到误差棒也需要调整)

counts, bin_edges = np.histogram(x1, BINS)    # BINS与上一个代码片段相同 
counts_norm, _ = np.histogram(x1, BINS, normed=True)  # 额外需要一个归一化的直方图数据
scales = np.divide(counts, counts_norm)       # 拿到归一化过程中放缩的尺度系数(每个bin不同) 
bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2.
errs = np.divide(np.sqrt(counts), scales)     # 误差棒尺度调整
plt.errorbar(bin_centers, counts_norm, yerr=errs, fmt='.')

持续更新。。。

相关文章

  • Matplotlib Tricks

    0. 绘图设置 0.0 导入函数包 0.1 全局设置 0.2 设置坐标名称与图标题 0.3 显示图例 0.4 显示...

  • Useful tricks for Ubuntu / Ubunt

    Useful tricks Useful tricks in Linux using and server man...

  • tensorflow 试gan记录

    参考tricks: keep calm and train GAN gan tricks 外国友人调DCGAN 为...

  • 学习CSS的资源(暂记)

    1.Google: 关键词 MDN 2.CSS Tricks(https://css-tricks.com) 3....

  • Swift tricks-Phantom Types

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • Swift tricks-Nonmutating

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • Swift tricks-Enum Associated Va

    Swift tricks系列收集Swift牛逼的patterns和让你代码更加Swifty的tricks,持续更新...

  • tricks

    http://blog.csdn.net/u014365862/article/details/77159778h...

  • tricks

    睫毛膏:在不掉毛的纸巾上蘸,去掉多余液体,不会苍蝇腿;每刷一遍都用✨金属梳齿的睫毛刷疏通✨松润代言的那款 眼妆:先...

  • TRICKS

    C语言linux 向vi复制代码时缩紧会出错,先:set paste然后再Ctrl+Shift+V就可以了 kei...

网友评论

      本文标题:Matplotlib Tricks

      本文链接:https://www.haomeiwen.com/subject/gdezwqtx.html