小编hit*_*tzg的帖子

使用seaborn的简单线条图

我正在尝试使用seaborn(python)绘制ROC曲线.使用matplotlib我只需使用该函数plot:

plt.plot(one_minus_specificity, sensitivity, 'bs--')
Run Code Online (Sandbox Code Playgroud)

where one_minus_specificitysensitivity是两个配对值列表.

在seaborn中是否有简单的情节功能对应物?我看了一下画廊,但我没有找到任何简单的方法.

python plot matplotlib roc seaborn

52
推荐指数
2
解决办法
8万
查看次数

在保持分辨率的同时保存类似imshow的图像

我有一个(n,m)数组,我一直在想象matplotlib.pyplot.imshow.我想将这些数据保存在某种类型的光栅图形文件中(例如png),以便:

  1. 颜色是显示的颜色 imshow
  2. 底层数组的每个元素恰好是保存图像中的一个像素 - 这意味着如果底层数组是(n,m)个元素,则图像是NxM像素.(我不是有意interpolation='nearest'imshow).
  3. 除了与阵列中的数据对应的像素之外,保存的图像中没有任何内容.(即边缘,轴等周围没有空白区域)

我怎样才能做到这一点?

我已经看到一些代码可以做到这一点,通过使用interpolation='nearest'和强制matplotlib(勉强)关闭轴,空格等.但是,必须有一些方法来更直接地做到这一点 - 也许与PIL?毕竟,我有基础数据.如果我可以为底层数组的每个元素获取RGB值,那么我可以使用PIL保存它.有没有办法从中提取RGB数据imshow?我可以编写自己的代码来将数组值映射到RGB值,但我不想重新发明轮子,因为matplotlib中已经存在该功能.

numpy matplotlib python-imaging-library pillow

20
推荐指数
1
解决办法
2万
查看次数

matplotlib savefig()大小控件

我写了一个函数,它从Pandas生成了一个数据帧,并生成了一个热图:

def drawHeatMap(df, city, province, collector, classtype, color, titleposy):
    try:
        thePlot = pl.matshow(df.values, cmap='PuBuGn')
        pl.colorbar(thePlot, orientation='vertical')
        aTitle = (classtype + ' Composition Changes Over Time in ' + city + 
                ', ' + province + '\n' + collector + ' collector. ' + 'rs100')
        pl.title(aTitle, x=0.5, y=titleposy, style='oblique', weight='bold')
        pl.xlabel('Collection Time')
        pl.xticks(range(len(df.columns)), df.columns, rotation=90)
        pl.yticks(range(len(df.index)), df.index)
        fileName = (classtype + '-' + city + '-' 
                + province + '-' + collector + '.png')
        pl.savefig(fileName)
    except ZeroDivisionError:
        errorMessage = ('No Data …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

19
推荐指数
6
解决办法
5万
查看次数

使用双三次插值的颜色matplotlib地图

我知道,matplotlib和SciPy的可以做双三次插值: http://matplotlib.org/examples/pylab_examples/image_interp.html http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html HTTP:/ /docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html

我也知道,它可以绘制一张世界地图与matplotlib的: http://matplotlib.org/basemap/users/geography.html http://matplotlib.org/basemap/users/examples.html HTTP:/ /matplotlib.org/basemap/api/basemap_api.html

但是我可以根据4个数据点进行双三次插值并仅对地块进行着色吗?

例如,将这些用于4个数据点(经度和纬度)和颜色:

Lagos: 6.453056, 3.395833; red HSV 0 100 100 (or z = 0)
Cairo: 30.05, 31.233333; green HSV 90 100 100 (or z = 90)
Johannesburg: -26.204444, 28.045556; cyan HSV 180 100 100 (or z = 180)
Mogadishu: 2.033333, 45.35; purple HSV 270 100 100 (or z = 270)
Run Code Online (Sandbox Code Playgroud)

我认为必须能够在纬度和经度范围内进行双三次插值,然后在该层顶部添加海洋,湖泊和河流?我可以这样做drawmapboundary.实际上有一个选项maskoceans:http: //matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.maskoceans

我可以像这样插入数据:

xnew, ynew = np.mgrid[-1:1:70j, -1:1:70j]
tck = interpolate.bisplrep(x, y, z, s=0) …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib scipy matplotlib-basemap

13
推荐指数
1
解决办法
1439
查看次数

使用matplotlib动画的子图

我有这个代码.我想添加一个子图来绘制余弦函数.(我不想创建一个类).第二个图也应该动态更新

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def data_gen():
    t = data_gen.t
    cnt = 0
    while cnt < 1000:
        cnt+=1
        t += 0.05
        yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
data_gen.t = 0

fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 5)
ax.grid()
xdata, ydata = [], []
def run(data):
    # update the data
    t,y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

11
推荐指数
1
解决办法
1万
查看次数

使用 PyQtGraph 绘制日期时间对象

我是 PyQtGraph 的新手,需要帮助在 x 轴上绘制日期时间对象,这可以使用 matplotlib 轻松完成。任何帮助,将不胜感激。

作为 Id 想要做的简单版本,请参见下面我想绘制的日期时间对象,该对象显示为 x 轴上的刻度。

代码抛出错误,因为这无法完成。

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import datetime

datetimes = ['2014-10-01 00:00:00', '2014-10-02 00:00:00', '2014-10-03 00:00:00']
x = [datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S') for i in datetimes]
y = [1,2,3]


win = pg.GraphicsWindow(title = 'plotting')
p1 = win.addPlot(row=1, col=0, title = 'test')
p1.plot(x,y)

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
Run Code Online (Sandbox Code Playgroud)

python datetime pyqtgraph

9
推荐指数
2
解决办法
4794
查看次数

Matplotlib:缩放后找出xlim和ylim

你肯定知道如何快速地在放大后如何追踪我的身材的极限?我想精确地知道坐标,所以我可以用ax.set_xlim和重现这个图ax.set_ylim.我正在使用标准的qt4agg后端.

编辑:我知道我可以用光标找出下角和上角的两个位置,但也许有正式的方法可以做到这一点?

python matplotlib

9
推荐指数
1
解决办法
5475
查看次数

设置matplotlib图的大小与3d子图

我有一个图,我想在2个子图中绘制一个三维散点图和一个普通图.我用这个代码

fig = plt.figure(1)
ax = fig.add_subplot(211, projection='3d')
ax2 = fig.add_subplot(212)
Run Code Online (Sandbox Code Playgroud)

然后我使用ax和ax2在正确的位置绘制我的数据.但是我得到的数字太小,我怎么能把它做得更大?添加figsize=(w, h)到第一行没有任何效果,如果我把它添加到第二行或第三行会导致错误:

AttributeError:'Axes3DSubplot'对象没有属性'set_figsize'

python matplotlib

8
推荐指数
1
解决办法
9811
查看次数

旋转子图中的刻度标签(Pyplot,Matplotlib,gridspec)

我试图将子图(使用GridSpec创建)的x标签旋转45度。我尝试使用axa.set_xticks()axa.set_xticklabels,但似乎无法正常工作。谷歌也没有提供帮助,因为大多数与标签有关的问题都是关于正常绘图而不是子图。

参见下面的代码:

width = 20                                    # Width of the figure in centimeters
height = 15                                   # Height of the figure in centimeters
w = width * 0.393701                            # Conversion to inches
h = height * 0.393701                           # Conversion to inches

f1 = plt.figure(figsize=[w,h])
gs = gridspec.GridSpec(1, 7, width_ratios = [1.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])

axa = plt.subplot(gs[0])
axa.plot(dts, z,'k', alpha=0.75, lw=0.25)
#axa.set_title('...')
axa.set_ylabel('TVDSS ' + '$[m]$', fontsize = '10' )
axa.set_xlabel('slowness 'r'$[\mu s/m]$', fontsize …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
3
解决办法
1万
查看次数

Matplotlib:更改colorbar的背景颜色(使用透明色时)

上下文:Matplotlib散点图.alpha在散点图中使用透明度(<1)和白色以外的轴背景颜色时,相应颜色条中的颜色看起来不同.这在下图中清晰可见:右侧的颜色条看起来"太亮".但是,设置颜色条轴的背景颜色不会改变这一点.

所以问题是:如何用透明色改变colorbar的背景颜色?

我正在使用Python 2.7.3和Matplotlib 1.3.1(在Ubuntu 12.04上)

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(10) #for reproducability

n = 10
ticks = range(n)
data = np.hstack((np.random.rand(50,2),np.random.randint(0,n,(50,1))))
colors = plt.cm.get_cmap('jet',n)(ticks)
lcmap = plt.matplotlib.colors.ListedColormap(colors)

plt.figure(figsize=(8,4))
ax = plt.subplot(121)
plt.scatter(data[:,0],data[:,1], c=data[:,2], s=40, alpha=0.3, 
        edgecolor='none', cmap=lcmap)
plt.colorbar(ticks=ticks)
plt.clim(-0.5,9.5)

ax = plt.subplot(122)
plt.scatter(data[:,0],data[:,1], c=data[:,2], s=40, alpha=0.3, 
        edgecolor='none', cmap=lcmap)
cb = plt.colorbar(ticks=ticks)
ax.set_axis_bgcolor((0.2,0.2,0.2))
cb.ax.set_axis_bgcolor((0.2,0.2,0.2))
plt.clim(-0.5,9.5)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib

5
推荐指数
1
解决办法
1983
查看次数