小编Han*_*gzu的帖子

更改seaborn热图的xticklabels fontsize

这是我的问题:
我使用sns.clustermap()
图来绘制7变量的系数:

http://i4.tietuku.com/ab10ee8d1983361f.png

  • x/y tickslabel看起来很小(在我的例子中,s1,s2,... s9)

我的尝试

  • label='big ==>没效果
  • plt.tick_params(axis ='both',which ='minor',labelsize = 12)===> cbar lable已更改,但x/y轴看起来相同.

http://i11.tietuku.com/5068224d5bbc7c00.png

我的代码:

 ds =  pd.read_csv("xxxx.csv")
 corr = ds.corr().mul(100).astype(int)

 cmap = sns.diverging_palette(h_neg=210, h_pos=350, s=90, l=30, as_cmap=True)

 sns.clustermap(data=corr_s, annot=True, fmt='d',cmap = "Blues",annot_kws={"size": 16},)
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

16
推荐指数
2
解决办法
3万
查看次数

在Pandas中使用多处理读取csv文件的最简单方法

这是我的问题.
随着一堆.csv文件(或其他文件).熊猫是一种简单的阅读方式并保存为Dataframe格式.但是当文件量很大时,我想用多处理来读取文件以节省一些时间.

我早期的尝试

我手动将文件分成不同的路径.分别使用:

os.chdir("./task_1)
files = os.listdir('.')
files.sort()
for file in files:
    filename,extname = os.path.splitext(file)
    if extname == '.csv':
        f = pd.read_csv(file)
        df = (f.VALUE.as_matrix()).reshape(75,90)   
Run Code Online (Sandbox Code Playgroud)

然后结合它们.

如何运行它们pool来实现我的问题?
任何建议将不胜感激!

python csv multiprocessing pandas

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

在特定位置设置xtickslabel最干净的方法

我想绘制带有分箱数据的直方图.

数据

## x_da: 1,2,3,4,5
x_da = np.arange(1,1+5*1,1)
## bin setting 
bin_range = ["< 1 ","1 - 2","2 - 3","3 - 4","> 4"]
## Counts base on the bin(Already st)
y_da = np.array([178,2301,2880,1686,1715])      
Run Code Online (Sandbox Code Playgroud)

情节

fig = plt.figure(figsize= (5,3))
ax = plt.subplot(111)  
plt.bar(x_da,y_da,width=1,edgecolor='none',align='center', \
        fill=True,facecolor = "green",zorder = 1 ,alpha=0.5) 
ax.get_yaxis().set_tick_params(which='both', direction='out')
ax.get_xaxis().set_tick_params(which='both', direction='out')    

## Set the "range" mapping to its bar
ax.set_xticks(np.arange(1,1+5*1,1))
ax.set_xticklabels(bin_range,fontsize = 14)    
Run Code Online (Sandbox Code Playgroud)

数字

http://7xrn7f.com1.z0.glb.clouddn.com/16-3-9/18987922.jpg

我的目标

  1. 调整xtickslines的位置,表示条形垂直边的扩展,如下所示:

http://7xrn7f.com1.z0.glb.clouddn.com/16-3-9/5475187.jpg

  1. xticklabels仍然位于相同的位置(每个栏的中点)

我的尝试

我的方法是创建一个包含上面那些位置的xticks,并将中点设置为invisble.
使用这样的代码:

ax.set_xticks(np.arange(0.5,1+10*0.5,1))
for xtick in ax.xaxis.get_ticklines()[1::2]:
    xtick.set_visible(False) …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib histogram

7
推荐指数
1
解决办法
403
查看次数

使用scikit包在Python中绘制集群区域的边界

这是我在3属性(x,y,value)中处理数据聚类的简单示例.每个样本代表其位置(x,y)及其所属变量.

我的代码发布在这里:

x = np.arange(100,200,1)
y = np.arange(100,200,1)
value = np.random.random(100*100)

xx,yy = np.meshgrid(x,y)
xx = xx.reshape(100*100)
yy = yy.reshape(100*100)
j = np.dstack((xx,yy,value))[0,:,:]

fig = plt.figure(figsize =(12,4))
ax1 = plt.subplot(121)
xi,yi = np.meshgrid(x,y)
va    = value.reshape(100,100)
pc = plt.pcolormesh(xi,yi,va,cmap = plt.cm.Spectral)
plt.colorbar(pc)

ax2 = plt.subplot(122)
y_pred = KMeans(n_clusters=12, random_state=random_state).fit_predict(j)
vb = y_pred.reshape(100,100)
plt.pcolormesh(xi,yi,vb,cmap = plt.cm.Accent)
Run Code Online (Sandbox Code Playgroud)

这个数字如下:

在此输入图像描述

如何识别每个聚类区域的边界并勾画它们以加强可视化效果.

PS

这是我手动绘制的插图.我需要的是识别聚类边界并用线条描绘它们.

在此输入图像描述

PPS

我在这里找到了一个有趣的问题,试图在R中绘制聚类区域的边界

在此输入图像描述

更新

我尝试了子程序后:

for i in range(n_cluster):
    plt.contour(vb ==i contours=1,colors=['b']) 
Run Code Online (Sandbox Code Playgroud)

完成!

在此输入图像描述

python cluster-analysis matplotlib k-means scikit-learn

7
推荐指数
1
解决办法
3631
查看次数

在 matplotlib 中同时更改线宽和颜色

在此处输入图片说明

上图是一幅精美的艺术品,同时显示了风速、风向和温度。详细:

  • X 轴代表日期
  • Y 轴显示风向(南风、西风等)
  • 线的不同宽度代表通过时间序列的风速
  • 线条的不同颜色代表大气温度

这个简单的图形在没有冗余的情况下可视化了 3 个不同的属性。

所以,我真的很想在 matplotlib 中重现类似的情节。

我现在的尝试

## Reference 1 http://stackoverflow.com/questions/19390895/matplotlib-plot-with-variable-line-width
## Reference 2 http://stackoverflow.com/questions/17240694/python-how-to-plot-one-line-in-different-colors

def plot_colourline(x,y,c):
    c = plt.cm.jet((c-np.min(c))/(np.max(c)-np.min(c)))
    lwidths=1+x[:-1]
    ax = plt.gca()
    for i in np.arange(len(x)-1):
        ax.plot([x[i],x[i+1]], [y[i],y[i+1]], c=c[i],linewidth = lwidths[i])# = lwidths[i])
    return

x=np.linspace(0,4*math.pi,100)
y=np.cos(x)
lwidths=1+x[:-1]

fig = plt.figure(1, figsize=(5,5))
ax  = fig.add_subplot(111)
plot_colourline(x,y,prop)

ax.set_xlim(0,4*math.pi)
ax.set_ylim(-1.1,1.1)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

有人有更感兴趣的方法来实现这一目标吗?任何建议将不胜感激!

python visualization matplotlib

7
推荐指数
1
解决办法
1770
查看次数

使用 Matplotlib 以图例样式绘制离散颜色条

有时,我想以 pcolormesh 样式绘制离散值。

例如,表示一个 100x100 形状的二维数组,其中包含 int 0~7

data  = np.random.randint(8, size=(100,100))
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75)
plt.colorbar()  
Run Code Online (Sandbox Code Playgroud)

如图所示:
在此处输入图片说明

如何生成图例样式的颜色条。换句话说,每个颜色框对应于它的值(例如粉红色的颜色框 --> 0)

这里有一个插图(不适合这个例子):

在此处输入图片说明

python arrays visualization matplotlib python-2.7

7
推荐指数
1
解决办法
1844
查看次数

如何使用设置剪裁路径为Basemap多边形

我想使用imshow(例如)在一个国家的边界​​内显示一些数据(为了我的例子,我选择了美国)下面的简单例子说明了我想要的:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon

data = np.arange(100).reshape(10, 10)
fig = plt.figure()
ax = fig.add_subplot(111)
im = ax.imshow(data)
poly = RegularPolygon([ 0.5,  0.5], 6, 0.4, fc='none', 
                      ec='k', transform=ax.transAxes)
im.set_clip_path(poly)
ax.add_patch(poly)
ax.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

现在我想这样做但不是简单的多边形,我想使用美国的复杂形状.我已经创建了一些包含在"Z"数组中的示例数据,如下面的代码所示.我希望使用colourmap显示这些数据,但仅限于美国大陆的边界.

到目前为止,我已尝试过以下内容.我从一个形状文件这里包含在"nationp010g.shp.tar.gz"我用的底图模块在python绘制美国.请注意,这是我找到的唯一方法,它使我能够获得我需要的区域的多边形.如果有其他方法,我也会对它们感兴趣.然后我创建一个名为"mainpoly"的多边形,它几乎是我想要用蓝色着色的多边形:

在此输入图像描述

请注意,只有一个物体被着色,所有其他不相交的多边形保持白色:

在此输入图像描述

因此,蓝色区域几乎是我想要的,请注意加拿大附近有不必要的边界线,因为边界实际上穿过了一些湖泊,但这是一个小问题.真正的问题是,为什么我的imshow数据不在美国境内显示?比较我的第一个和第二个示例代码,我无法理解为什么我在第二个示例中没有得到修剪的imshow,就像我在第一个示例中所做的那样.在理解我所缺少的内容时,我们将不胜感激.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap as Basemap
from matplotlib.patches import Polygon

# Lambert Conformal map of lower 48 states.
m = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,
            projection='lcc',lat_1=33,lat_2=45,lon_0=-95)


shp_info = m.readshapefile('nationp010g/nationp010g', …
Run Code Online (Sandbox Code Playgroud)

python gis matplotlib shapefile matplotlib-basemap

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

如何将相关矩阵绘制为一组椭圆,类似于R露天包?

下图是使用露天R套件绘制的:

显示变量之间关系的相关矩阵

我知道matplotlib有这个plt.matshow功能,
但它不能同时清楚地显示变量之间的关系.

这是我早期的工作:

df是一个带有7个变量的pandas数据框,如下所示:

在此输入图像描述

我不知道如何将.csv文件附加到StackOverflow.

使用plt.matshow(df.corr(),cmap = plt.cm.Greens),图中显示如下:

在此输入图像描述

第二个数字不能像第一个数字一样清楚地表示变量的相关关系.

编辑:

我在这里将csv文件上传到Google文档.

python numpy matplotlib correlation pandas

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

如何使用pcolormesh绘制2D网格中特定方块的轮廓?

我有一个(21 x 25)2D数组,它包含两个离散值,"1"和"2".值如下所示:

value = np.array(
    [[ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
       1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
     [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
       1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
     [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
       1.,  1.,  1.,  1.,  1.,  1.,  1.,  1., …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

jupyter Notebook的Python3环境无法导入已安装的包

我已经安装了基于Python 2.7的Anaconda软件,Python 3.4内核也已经配置完毕。

使用pip3 install xxx,我可以安装一些适用于 Python 3 环境的包。在ipython3中,它们可以很好地导入。但是,在jupyter笔记本的Python 3内核中,这些包无法成功导入。

# Python 3 environment inside the jupyter notebook
import numpy as np
> No module named 'numpy'
Run Code Online (Sandbox Code Playgroud)

我的内核路径:

Available kernels:
  ir            /Users/HYF/Library/Jupyter/kernels/ir
  javascript    /Users/HYF/Library/Jupyter/kernels/javascript
  python2       /Users/HYF/anaconda/share/jupyter/kernels/python2
  python3       /usr/local/share/jupyter/kernels/python3
Run Code Online (Sandbox Code Playgroud)

jupyter内核中的Python3环境显示如下:

import sys
sys.executable
>'/Users/HYF/anaconda/envs/py35/bin/python'
Run Code Online (Sandbox Code Playgroud)

我认为问题是 python3 包路径未加载到 jupyter 笔记本中。如何解决这个问题?

python python-3.x jupyter jupyter-notebook

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