我使用matplotlib进行绘图,并且我在colorbar中有短行:
如何删除短行以获得如下图所示的颜色条:
我的代码需要更改什么? 我的代码在这里:
#!/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()
答案 0 :(得分:2)
我认为你的意思是你要从彩条中删除次要刻度。
您可以使用LogLocator
模块中的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)
...
答案 1 :(得分:1)