我正在尝试使用seaborn(python)绘制ROC曲线.使用matplotlib我只需使用该函数plot
:
plt.plot(one_minus_specificity, sensitivity, 'bs--')
Run Code Online (Sandbox Code Playgroud)
where one_minus_specificity
和sensitivity
是两个配对值列表.
在seaborn中是否有简单的情节功能对应物?我看了一下画廊,但我没有找到任何简单的方法.
我有一个(n,m)数组,我一直在想象matplotlib.pyplot.imshow
.我想将这些数据保存在某种类型的光栅图形文件中(例如png),以便:
imshow
interpolation='nearest'
的imshow
).我怎样才能做到这一点?
我已经看到一些代码可以做到这一点,通过使用interpolation='nearest'
和强制matplotlib(勉强)关闭轴,空格等.但是,必须有一些方法来更直接地做到这一点 - 也许与PIL?毕竟,我有基础数据.如果我可以为底层数组的每个元素获取RGB值,那么我可以使用PIL保存它.有没有办法从中提取RGB数据imshow
?我可以编写自己的代码来将数组值映射到RGB值,但我不想重新发明轮子,因为matplotlib中已经存在该功能.
我写了一个函数,它从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) 我知道,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) 我有这个代码.我想添加一个子图来绘制余弦函数.(我不想创建一个类).第二个图也应该动态更新
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) 我是 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) 你肯定知道如何快速地在放大后如何追踪我的身材的极限?我想精确地知道坐标,所以我可以用ax.set_xlim
和重现这个图ax.set_ylim
.我正在使用标准的qt4agg后端.
编辑:我知道我可以用光标找出下角和上角的两个位置,但也许有正式的方法可以做到这一点?
我有一个图,我想在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'
我试图将子图(使用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) 上下文: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)