我怎样才能删除matplotlib中颜色条的短线
how can i delete the short lines of the colorbar in matplotlib
我用 matplotlib 绘图,颜色栏中有短线:
我怎样才能删除短线以获得像这张照片这样的颜色条:
我的代码需要更改什么?
我的代码在这里:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from matplotlib import rc
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import matplotlib as cm
phi = open("file1.txt").read().splitlines()
psi = open("file2.txt").read().splitlines()
# normal distribution center at x=0 and y=5
x = np.array(phi).astype(np.float)
y = np.array(psi).astype(np.float)
plt.hist2d(x, y, bins=400, cmap='bone', norm=LogNorm())
plt.colorbar()
plt.title('Distribution')
plt.xlabel(r' Phi ($\phi$)', fontsize=15)
plt.ylabel(r'Psi ($\psi$)', fontsize=15)
plt.rc('xtick', labelsize=11)
plt.rc('ytick', labelsize=11)
plt.xlim((-180,180))
plt.ylim((-180,180))
plt.axhline(0, color='black')
plt.axvline(0, color='black')
plt.grid()
plt.show()
我猜你的意思是你想从颜色栏中删除小刻度。
您可以通过使用 LogLocator
from the matplotlib.ticker
模块设置刻度的位置来完成此操作。默认情况下,这没有任何小刻度(即基数的整数幂之间没有刻度),因此我们可以使用 LogLocator
而无需其他选项。
你只需要在创建时保留对 colorbar
的引用(这里我称之为 cb
),然后你可以在其上使用 set_ticks()
方法。确保您还设置了 update_ticks=True
以在制作绘图之前进行此更新。
(我使用了一些假数据,但除此之外没有更改脚本中的任何其他内容):
import matplotlib.ticker as ticker
...
cb = plt.colorbar()
cb.set_ticks(ticker.LogLocator(), update_ticks=True)
...
要完全删除刻度 ("How can I delete the short lines?"),您可以在颜色条的轴上使用 tick_params
。
cbar = plt.colorbar()
cbar.ax.tick_params(size=0)
我用 matplotlib 绘图,颜色栏中有短线:
我怎样才能删除短线以获得像这张照片这样的颜色条:
我的代码需要更改什么? 我的代码在这里:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from matplotlib import rc
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import matplotlib as cm
phi = open("file1.txt").read().splitlines()
psi = open("file2.txt").read().splitlines()
# normal distribution center at x=0 and y=5
x = np.array(phi).astype(np.float)
y = np.array(psi).astype(np.float)
plt.hist2d(x, y, bins=400, cmap='bone', norm=LogNorm())
plt.colorbar()
plt.title('Distribution')
plt.xlabel(r' Phi ($\phi$)', fontsize=15)
plt.ylabel(r'Psi ($\psi$)', fontsize=15)
plt.rc('xtick', labelsize=11)
plt.rc('ytick', labelsize=11)
plt.xlim((-180,180))
plt.ylim((-180,180))
plt.axhline(0, color='black')
plt.axvline(0, color='black')
plt.grid()
plt.show()
我猜你的意思是你想从颜色栏中删除小刻度。
您可以通过使用 LogLocator
from the matplotlib.ticker
模块设置刻度的位置来完成此操作。默认情况下,这没有任何小刻度(即基数的整数幂之间没有刻度),因此我们可以使用 LogLocator
而无需其他选项。
你只需要在创建时保留对 colorbar
的引用(这里我称之为 cb
),然后你可以在其上使用 set_ticks()
方法。确保您还设置了 update_ticks=True
以在制作绘图之前进行此更新。
(我使用了一些假数据,但除此之外没有更改脚本中的任何其他内容):
import matplotlib.ticker as ticker
...
cb = plt.colorbar()
cb.set_ticks(ticker.LogLocator(), update_ticks=True)
...
要完全删除刻度 ("How can I delete the short lines?"),您可以在颜色条的轴上使用 tick_params
。
cbar = plt.colorbar()
cbar.ax.tick_params(size=0)