我不太明白为什么我无法在指定的限制下创建水平和垂直线.我想通过这个框绑定数据.但是,双方似乎并不遵守我的指示.为什么是这样?
# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我正在虚拟环境中使用flask.我能够用pip安装matplotlib,我可以import matplotlib在Python会话中.但是,当我导入它时
matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
globals(),locals(),[backend_name],0)
File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 24, in <module>
from matplotlib.backends import _macosx
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a …Run Code Online (Sandbox Code Playgroud) 我想更改直方图的默认x范围.数据范围是7到12.但是,默认情况下,直方图从7开始,到13结束.我希望它从6.5开始,到12.5结束.但是,刻度应该从7到12.我该怎么做?
import asciitable
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import pylab
from pylab import xticks
data = asciitable.read(file)
hmag = data['col8']
visits = data['col14']
origin = data['col13']
n, bins, patches = plt.hist(hmag, 30, facecolor='gray', align='mid')
xticks(range(7,13))
pylab.rc("axes", linewidth=8.0)
pylab.rc("lines", markeredgewidth=2.0)
plt.xlabel('H mag', fontsize=14)
plt.ylabel('# of targets', fontsize=14)
pylab.xticks(fontsize=15)
pylab.yticks(fontsize=15)
plt.grid(True)
plt.savefig('hmag_histogram.eps', facecolor='w', edgecolor='w', format='eps')
plt.show()
Run Code Online (Sandbox Code Playgroud) 使用通过自制软件安装的Python 2.7.然后我用pip来安装IPython.所以,IPython似乎安装在:
/usr/local/lib/python2.7/site-packages/
我认为这是真的,因为有一个IPython目录和ipython蛋.
但是,当我在终端输入ipython时,我得到:
-bash:ipython:找不到命令
我不明白为什么这只发生在IPython而不是python?另外,我该如何解决这个问题?我应该在.bashrc中添加什么路径?我该如何添加?
目前,我的.bashrc读取:
PATH = $ PATH:在/ usr/local/bin目录/
谢谢!
我想创建以下直方图(见下图)取自"Think Stats"一书.但是,我无法将它们放在同一个地块上.每个DataFrame都有自己的子图.
我有以下代码:
import nsfg
import matplotlib.pyplot as plt
df = nsfg.ReadFemPreg()
preg = nsfg.ReadFemPreg()
live = preg[preg.outcome == 1]
first = live[live.birthord == 1]
others = live[live.birthord != 1]
#fig = plt.figure()
#ax1 = fig.add_subplot(111)
first.hist(column = 'prglngth', bins = 40, color = 'teal', \
alpha = 0.5)
others.hist(column = 'prglngth', bins = 40, color = 'blue', \
alpha = 0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
当我使用ax = ax1时,上面的代码不起作用:pandas多个图不能作为组合,也不是这个例子做我需要的:使用pandas覆盖多个直方图.当我按原样使用代码时,它会创建两个带直方图的窗口.任何想法如何结合它们?
以下是我希望看到最终数字的示例:

我想删除在标签中使用下标时出现的斜体字体.例如,x标签中的"Teff"以斜体显示"eff".我想乳胶不能以这种方式呈现它.通常,在latex中,可以使用\ rm {}命令来实现.但是,这在matplotlib中不起作用.请帮忙.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = x
plt.plot(x,y,'ro')
plt.xlabel('Primary T$_{eff}$')
Run Code Online (Sandbox Code Playgroud)

我对Pandas中的数据类型"object"感到困惑.究竟什么是"对象"?
我想将变量"SpT"(见下文)从object更改为String.
> df_cleaned.dtypes
Vmag float64
RA float64
DE float64
Plx float64
pmRA float64
pmDE float64
B-V float64
SpT object
M_V float64
distance float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
为此我做了以下事情:
df_cleaned['SpT'] = df_cleaned['SpT'].astype(str)
Run Code Online (Sandbox Code Playgroud)
但这对SpT的类型没有影响.
这样做的原因是当我执行以下操作时:
f = lambda s: (len(s) >= 2) and (s[0].isalpha()) and (s[1].isdigit())
i = df_cleaned['SpT'].apply(f)
df_cleaned = df_cleaned[i]
Run Code Online (Sandbox Code Playgroud)
我明白了:
TypeError: object of type 'float' has no len()
Run Code Online (Sandbox Code Playgroud)
因此,我相信如果我将"对象"转换为"字符串",我会做我想做的事情.
更多信息:这就是SpT的样子:
HIP
1 F5
2 K3V
3 B9
4 F0V
5 G8III
6 M0V:
7 G0
8 M6e-M8.5e Tc
9 G5 …Run Code Online (Sandbox Code Playgroud) 我想在 1-100 之间随机选择一个数字,这样获得数字 60-100 的概率高于 1-59。
我希望有可能成为数字 1-100 的左偏分布。也就是说,它有一个很长的尾巴和一个峰值。
沿线的东西:
pers = np.arange(1,101,1)
prob = <left-skewed distribution>
number = np.random.choice(pers, 1, p=prob)
Run Code Online (Sandbox Code Playgroud)
我不知道如何生成左偏离散概率函数。有任何想法吗?谢谢!
我想删除图例框周围的框架.我找到了一些方法.但是,没有一个用"轴方法"实现它们.
下面显示的代码得到的结果,但我想知道一个更干净,更优雅的方式,也许像ax.legend.draw_frame(False)或类似的东西.如果没有使用pylab这样的方法存在任何想法?
解决方案:ax.legend(numpoints=1, loc=3, frameon=False)按照Evert的建议使用
import numpy as np
import matplotlib.pyplot as plt
from pylab import legend
x = np.linspace(1,10, 100)
y = x**3
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(x,y, 'bo', label='Blah!')
lg = legend(numpoints = 1, loc=2)
lg.get_frame().set_alpha(0)
#ax.legend(numpoints = 1, loc=2)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想定位5个子图,使得顶部有三个,底部有两个,但是彼此相邻.当前代码接近但我希望最终结果如下所示(忽略灰线):

import matplotlib.pyplot as plt
ax1 = plt.subplot(231)
ax2 = plt.subplot(232)
ax3 = plt.subplot(233)
ax4 = plt.subplot(234)
ax5 = plt.subplot(236)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python ×8
matplotlib ×7
histogram ×2
macos ×2
pandas ×2
bash ×1
command-line ×1
flask ×1
ipython ×1
latex ×1
statistics ×1
terminal ×1
virtualenv ×1
xrange ×1