Questions tagged «matplotlib»

Matplotlib是Python的绘图库,可以交互使用或嵌入独立的GUI中。其紧凑的“ pyplot”界面类似于MATLAB®的绘图功能。

3
matplotlib颜色条用于分散
我正在处理的数据具有3个绘图参数:x,y,c。如何为散点图创建自定义颜色值? 扩展这个例子,我想做的是: import matplotlib import matplotlib.pyplot as plt cm = matplotlib.cm.get_cmap('RdYlBu') colors=[cm(1.*i/20) for i in range(20)] xy = range(20) plt.subplot(111) colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20) plt.colorbar() plt.show() 但结果是 TypeError: You must first set_array for mappable

8
如何在Python的matplotlib中设置“后端”?
我是matplotlib的新用户,我的平台是Ubuntu 10.04 Python 2.6.5 这是我的代码 import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt plt.plot([1,2,3]) 错误是: /usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning: Your currently selected backend, 'agg' does not support show(). Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc') or with matplotlib.use() (backend, matplotlib.matplotlib_fname())) 我安装了“防颗粒几何”库,apt-get install libagg但是它不起作用。 我试图使用后端的其他参数,例如“ GTK”和“ TkAgg”。 我安装了python-gtk2-dev软件包,但错误仍在下面。 谁能告诉我一个可执行的后端参数及其依赖库? 这是错误: >>> …

3
在Pandas条形图上用值注释条
我一直在寻找一种方法,用DataFrame中的四舍五入数值在Pandas条形图中标注条形。 >>> df=pd.DataFrame({'A':np.random.rand(2),'B':np.random.rand(2)},index=['value1','value2'] ) >>> df A B value1 0.440922 0.911800 value2 0.588242 0.797366 我想得到这样的东西: 我尝试使用此代码示例,但所有注释均以x刻度为中心: >>> ax = df.plot(kind='bar') >>> for idx, label in enumerate(list(df.index)): for acc in df.columns: value = np.round(df.ix[idx][acc],decimals=2) ax.annotate(value, (idx, value), xytext=(0, 15), textcoords='offset points')

2
在matplotlib imshow()图形轴上更改值
说我有一些输入数据: data = np.random.normal(loc=100,scale=10,size=(500,1,32)) hist = np.ones((32,20)) # initialise hist for z in range(32): hist[z],edges = np.histogram(data[:,0,z],bins=np.arange(80,122,2)) 我可以使用绘制它imshow(): plt.imshow(hist,cmap='Reds') 得到: 但是,x轴值与输入数据不匹配(即平均值为100,范围从80到122)。因此,我想更改x轴以显示中的值edges。 我努力了: ax = plt.gca() ax.set_xlabel([80,122]) # range of values in edges ... # this shifts the plot so that nothing is visible 和 ax.set_xticklabels(edges) ... # this labels the …

7
python错误:没有名为pylab的模块
我是Python的新手,想使用其plot功能来创建图形。我正在使用ubuntu 12.04。我从http://eli.thegreenplace.net/2011/10/10/installing-python-2-7-on-ubuntu/遵循了Python安装步骤,但是当我这样做时 from pylab import * 我收到此错误 >>> from pylab import * Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named pylab 我的Python版本是python 2.7。有人可以告诉我我在这里想念的吗?


2
推荐哪种绘制方式:matplotlib或pylab?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我看到我可以使用以下任一方法在Python中进行绘图: import matplotlib matplotlib.pyplot.plot(...) 要么: import pylab pylab.plot(...) 两者都使用相同的matplotlib绘图代码。 那么,Matplotlib开发人员/文档当前建议使用哪种方法作为更好的绘图方法?为什么?

2
matplotlib.pyplot不会忘记以前的绘图-如何刷新/刷新?
您如何matplotlib.pyplot“忘记”以前的地块 我正在尝试使用绘制多个时间 matplotlib.pyplot 代码如下: def plottest(): import numpy as np import matplotlib.pyplot as plt a=np.random.rand(10,) b=np.random.rand(10,) c=np.random.rand(10,) plt.plot(a,label='a') plt.plot(b,label='b') plt.plot(c,label='c') plt.legend(loc='upper left') plt.ylabel('mag') plt.xlabel('element)') plt.show() e=np.random.rand(10,) f=np.random.rand(10,) g=np.random.rand(10,) plt.plot(e,label='e') plt.plot(f,label='f') plt.plot(g,label='g') plt.legend(loc='upper left') plt.ylabel('mag') plt.xlabel('element)') plt.show() 不幸的是,无论我做什么,我都会得到相同的情节(实际上是从我之前运行并完成的其他代码中得到的)。 类似的代码以前为我工作。 我看了这些问题: 如何“清理板岩”? Matplotlib pyplot show()一旦关闭就无法正常工作 (python)matplotlib pyplot show()..是否阻止? 并尝试使用plt.show(),plt.clf()并plt.close无济于事。 有任何想法吗?

1
熊猫时间序列图设置x轴主要和次要刻度线和标签
我希望能够为从熊猫时间序列对象绘制的时间序列图设置主要和次要xticks及其标签。 熊猫0.9“新增功能”页面显示: “您可以使用to_pydatetime或为Timestamp类型注册一个转换器” 但是我不知道该怎么做,以便可以使用matplotlibax.xaxis.set_major_locator和ax.xaxis.set_major_formatter(和次要)命令。 如果我使用它们而没有转换熊猫时间,则x轴刻度和标签最终会出错。 通过使用“ xticks”参数,我可以将主要刻度线传递到pandas.plot,然后设置主要刻度线标签。我不知道如何使用这种方法做较小的滴答声。(我可以在pandas.plot设置的默认次要刻度上设置标签) 这是我的测试代码: import pandas print 'pandas.__version__ is ', pandas.__version__ print 'matplotlib.__version__ is ', matplotlib.__version__ dStart = datetime.datetime(2011,5,1) # 1 May dEnd = datetime.datetime(2011,7,1) # 1 July dateIndex = pandas.date_range(start=dStart, end=dEnd, freq='D') print "1 May to 1 July 2011", dateIndex testSeries = pandas.Series(data=np.random.randn(len(dateIndex)), index=dateIndex) ax …

9
在matplotlib中定义颜色图的中点
我想设置色彩图的中间点,即我的数据从-5到10,我希望零成为中间点。我认为实现此目标的方法是归一化规范化并使用规范,但是我没有找到任何示例,我也不清楚我到底要实现什么。

5
使用matplotlib / numpy进行线性回归
我正在尝试在已生成的散点图上生成线性回归,但是我的数据是列表格式,并且可以找到所有使用polyfitrequire的示例arange。arange虽然不接受列表。我搜索过很多关于如何将列表转换为数组的东西,似乎还不清楚。我想念什么吗? 接下来,如何最好地使用整数列表作为的输入polyfit? 这是我关注的polyfit示例: from pylab import * x = arange(data) y = arange(data) m,b = polyfit(x, y, 1) plot(x, y, 'yo', x, m*x+b, '--k') show()

7
matplotlib(相等单位长度):纵横比“相等”时,z轴不等于x-和y-
当我为3d图形设置相等的长宽比时,z轴不会更改为“相等”。所以这: fig = pylab.figure() mesFig = fig.gca(projection='3d', adjustable='box') mesFig.axis('equal') mesFig.plot(xC, yC, zC, 'r.') mesFig.plot(xO, yO, zO, 'b.') pyplot.show() 给我以下内容: 显然,z轴的单位长度不等于x和y单位。 如何使三个轴的单位长度相等?我能找到的所有解决方案都行不通。谢谢。

8
如何在matplotlib / Python中更改后端
我正在努力解决以下问题。我需要生成包含图表集合的报告。除一个图表外,所有这些图表都是使用Matplotlib默认后端(TkAgg)制作的。需要使用Cairo后端制作一张图表,原因是我正在绘制igraph图形,并且只能使用Cairo绘制。 问题是我无法即时更改后端,例如以下操作不起作用:( matplotlib.pyplot.switch_backend('cairo.png') 我知道switch_backend功能是实验性的) 而且我也尝试过,matplotlib.use("cairo.png")但这会导致导入问题,因为该matplotlib.use("cairo.png")声明应在导入之前出现matplotlib.pyplot。但是在脚本的整个生命周期中,我需要两个不同的后端。 因此,我的问题是有人是否有代码片段显示了如何在Matplotlib中切换后端? 非常感谢! 更新:我编写了一个片段,该片段加载matplotlib,显示默认后端,卸载matplotlib,重新加载它并更改后端: import matplotlib import matplotlib.pyplot as plt import sys print matplotlib.pyplot.get_backend() modules = [] for module in sys.modules: if module.startswith('matplotlib'): modules.append(module) for module in modules: sys.modules.pop(module) import matplotlib matplotlib.use("cairo.png") import matplotlib.pyplot as plt print matplotlib.pyplot.get_backend() 但这真的是这样做的方法吗? 更新2:昨天我有一些严重的大脑冻结……最简单,最明显的解决方案是对所有图表使用开罗后端,而根本不切换后端:) 更新3:实际上,这仍然是一个问题,所以任何知道如何动态切换matplotlib后端的人..请发表您的答案。

1
Seaborn在热图中显示3位数字的科学计数法
我正在从pandasivot_table创建一个热图,如下所示: table2 = pd.pivot_table(df,values='control',columns='Year',index='Region',aggfunc=np.sum) sns.heatmap(table2,annot=True,cmap='Blues') 它将创建一个热图,如下所示。您可以看到数字不是很大(最大750),但是它以科学计数法显示它们。如果我查看表格本身,情况并非如此。关于如何使它以简单的符号显示数字有任何想法吗?

2
展示:范围和方面
我正在编写一个通过3D数据集可视化切片和投影的软件系统。我正在使用matplotlib并且专门imshow用于可视化从分析代码中获得的图像缓冲区。 由于我想用绘图轴注释图像,因此我使用了imshow用来将图像缓冲区像素坐标映射到数据空间坐标系的range关键字。 不幸的是,matplotlib不知道单位。说(以人工示例为例),我想绘制尺寸为的图像1000 m X 1 km。在这种情况下,范围将类似于[0, 1000, 0, 1]。即使图像阵列是方形的,但由于extent关键字所隐含的纵横比为1000,因此所得绘图轴的纵横比也为1000。 是否可以在保持我通过使用range关键字获得的自动生成的主要刻度线和标签的同时,保持绘图的纵横比?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.