我已经开始使用我的IPython笔记本了
ipython notebook --pylab inline
Run Code Online (Sandbox Code Playgroud)
这是我在一个单元格中的代码
df['korisnika'].plot()
df['osiguranika'].plot()
Run Code Online (Sandbox Code Playgroud)
这工作正常,它将绘制两条线,但在同一图表上.
我想在单独的图表上绘制每一行.如果图表彼此相邻,而不是一个接一个,那将是很好的.
我知道我可以把第二行放在下一个单元格中,然后我会得到两个图表.但我希望这些图表彼此接近,因为它们代表了相同的逻辑单元.
我创建了一个4D散点图来表示特定区域的不同温度.创建图例时,图例会显示正确的符号和颜色,但会在其中添加一条线.我正在使用的代码是:
colors=['b', 'c', 'y', 'm', 'r']
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0])
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
Run Code Online (Sandbox Code Playgroud)
我试过换Line2D到Scatter和scatter.Scatter返回错误并scatter更改了图表并返回了错误.
有了scatter,我改为range(10)包含数据点的列表.每个列表包含x,y或z变量.
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, …Run Code Online (Sandbox Code Playgroud) 我想创建一个堆叠直方图.如果我有一个由三个等长数据集组成的二维数组,这很简单.代码和图片如下:
import numpy as np
from matplotlib import pyplot as plt
# create 3 data sets with 1,000 samples
mu, sigma = 200, 25
x = mu + sigma*np.random.randn(1000,3)
#Stack the data
plt.figure()
n, bins, patches = plt.hist(x, 30, stacked=True, normed = True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用具有不同长度的三个数据集的类似代码,则结果是一个直方图覆盖另一个直方图.有什么办法可以用混合长度数据集进行叠加直方图吗?
##Continued from above
###Now as three separate arrays
x1 = mu + sigma*np.random.randn(990,1)
x2 = mu + sigma*np.random.randn(980,1)
x3 = mu + sigma*np.random.randn(1000,1)
#Stack the data
plt.figure()
plt.hist(x1, bins, stacked=True, normed = True)
plt.hist(x2, bins, …Run Code Online (Sandbox Code Playgroud) 在MATLAB中,可以使用datacursormode当用户鼠标悬停时向图形添加注释.在matplotlib中有这样的事吗?或者我需要使用自己的事件来编写matplotlib.text.Annotation?
我希望有一个由四个子图组成的数字.其中两个是通常的线图,其中两个是imshow-images.
我可以将imshow-images格式化为适当的绘图本身,因为它们中的每一个都需要自己的颜色条,修改的轴和另一个轴被移除.然而,对于子绘图来说,这似乎是绝对无用的.任何人都可以帮助我吗?
我用这个用于显示"常规"地块上述数据作为颜色表(由缩放输入阵列i,以[ i, i, i, i, i, i ]用于2D和主叫imshow()用它).
下面的代码首先显示我需要的子图,第二个代码显示我可以做的所有,这是不够的.
#!/usr/bin/env python
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
s = { 't':1, 'x':[1,2,3,4,5,6,7,8], 'D':[0.3,0.5,0.2,0.3,0.5,0.5,0.3,0.4] }
width = 40
# how I do it in just one plot
tot = []
for i in range(width):
tot.append(s['D'])
plt.imshow(tot, norm=LogNorm(vmin=0.001, vmax=1))
plt.colorbar()
plt.axes().axes.get_xaxis().set_visible(False)
plt.yticks([0, 2, 4, 6], [s['x'][0], s['x'][2], s['x'][4], s['x'][6]])
plt.show()
f = plt.figure(figsize=(20,20))
plt.subplot(211)
plt.plot(s['x'], s['D'])
plt.ylim([0, 1])
#colorplot
sp = f.add_subplot(212) …Run Code Online (Sandbox Code Playgroud) 我使用Cholesky分解从多维高斯中对随机变量进行采样,并计算随机变量的功率谱.我得到的结果numpy.linalg.cholesky总是在高频下具有比从中获得更高的功率scipy.linalg.cholesky.
这两个函数之间有什么区别可能导致这个结果?哪一个在数值上更稳定?
这是我使用的代码:
n = 2000
m = 10000
c0 = np.exp(-.05*np.arange(n))
C = linalg.toeplitz(c0)
Xn = np.dot(np.random.randn(m,n),np.linalg.cholesky(C))
Xs = np.dot(np.random.randn(m,n),linalg.cholesky(C))
Xnf = np.fft.fft(Xn)
Xsf = np.fft.fft(Xs)
Xnp = np.mean(Xnf*Xnf.conj(),axis=0)
Xsp = np.mean(Xsf*Xsf.conj(),axis=0)
Run Code Online (Sandbox Code Playgroud) 我用它autofmt_xdate以可读的方式绘制长x轴标签.问题是,当我想要组合不同的子图时,其他子图的x轴标记消失了,我不喜欢下图中最左边的子图(两行高).有没有办法防止autofmt_xdate淬火其他x轴标签?或者还有另一种旋转标签的方法吗?正如你所看到的那样,我也进行了实验xticks和"旋转",但结果并不令人满意,因为标签围绕它们的中心旋转,导致标签混乱.
产生以下情节的脚本:
from matplotlib import pyplot as plt
from numpy import arange
import numpy
from matplotlib import rc
rc("figure",figsize=(15,10))
#rc('figure.subplot',bottom=0.1,hspace=0.1)
rc("legend",fontsize=16)
fig = plt.figure()
Test_Data = numpy.random.normal(size=20)
fig = plt.figure()
Dimension = (2,3)
plt.subplot2grid(Dimension, (0,0),rowspan=2)
plt.plot(Test_Data)
plt.subplot2grid(Dimension, (0,1),colspan=2)
for i,j in zip(Test_Data,arange(len(Test_Data))):
plt.bar(i,j)
plt.legend(arange(len(Test_Data)))
plt.subplot2grid(Dimension, (1,1),colspan=2)
xticks = [r"%s (%i)" % (a,b) for a,b in zip(Test_Data,Test_Data)]
plt.xticks(arange(len(Test_Data)),xticks)
fig.autofmt_xdate()
plt.ylabel(r'$Some Latex Formula/Divided by some Latex Formula$',fontsize=14)
plt.plot(Test_Data)
#plt.setp(plt.xticks()[1],rotation=30)
plt.tight_layout()
#plt.show()
Run Code Online (Sandbox Code Playgroud)

下面用Python编写的代码将数据从Excel导入到Python,然后使用matplotlib进行绘图.我正在尝试使用该fill_between功能用不同的颜色填充第80行的上方和下方,但它给出了
ValueError: Argument dimensions are incompatible
Run Code Online (Sandbox Code Playgroud)
注意: Excel文件('eegg.xlsx')有4列,682行,包含int数据(0-100).
我认为问题在于调用的where参数fill_between,但我无法解决这个问题.
import xlrd
import numpy
from datetime import time
from pylab import *
workbook = xlrd.open_workbook('eegg.xlsx')
worksheet = workbook.sheet_by_name('Sayfa1')
num_rows = worksheet.nrows - 1
num_cells = worksheet.ncols - 1
curr_row = -1
att=[]
med=[]
for i in [2,3]:
kolon = worksheet.col(i)
for x in kolon[1:]:
d= int(x.value)
if i==2:
att.append(d)
elif i==3:
med.append(d)
n = len(att)
X = np.linspace(0,n,n,endpoint=True)
Y1 = att …Run Code Online (Sandbox Code Playgroud) 我想知道如何在matplotlib中创建100%堆积面积图.在matplotlib页面,我找不到它的例子.
有人在这里可以告诉我如何实现这一目标吗?
我正在使用Python中的pandas从CSV读取数据来绘制条形图.我将CSV读入a DataFrame并使用matplotlib绘制它们.
以下是我的CSV的外观:
SegmentName Sample1 Sample2 Sample3
Loop1 100 100 100
Loop2 100 100 100
Run Code Online (Sandbox Code Playgroud)
res = DataFrame(pd.read_csv("results.csv", index_col="SegmentName"))
Run Code Online (Sandbox Code Playgroud)
我绘制并将传奇设置为外部.
plt.figure()
ax = res.plot(kind='bar')
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.savefig("results.jpg")
Run Code Online (Sandbox Code Playgroud)
但是,x轴刻度标签垂直方向,因此我无法读取文本.我外面的传说也被切断了.
我可以将刻度标签的方向更改为水平,然后调整整个图形以使图例可见吗?

python ×9
matplotlib ×8
pandas ×2
ipython ×1
legend ×1
numpy ×1
python-2.7 ×1
scatter-plot ×1
scipy ×1
xlrd ×1