这是我的问题:
我使用sns.clustermap()
图来绘制7变量的系数:
http://i4.tietuku.com/ab10ee8d1983361f.png
label='big ==>没效果 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) 这是我的问题.
随着一堆.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来实现我的问题?
任何建议将不胜感激!
我想绘制带有分箱数据的直方图.
## 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
- 调整xtickslines的位置,表示条形垂直边的扩展,如下所示:
http://7xrn7f.com1.z0.glb.clouddn.com/16-3-9/5475187.jpg
- 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) 这是我在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)
这个数字如下:
如何识别每个聚类区域的边界并勾画它们以加强可视化效果.
这是我手动绘制的插图.我需要的是识别聚类边界并用线条描绘它们.
我尝试了子程序后:
for i in range(n_cluster):
plt.contour(vb ==i contours=1,colors=['b'])
Run Code Online (Sandbox Code Playgroud)
完成!
上图是一幅精美的艺术品,同时显示了风速、风向和温度。详细:
这个简单的图形在没有冗余的情况下可视化了 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)
有人有更感兴趣的方法来实现这一目标吗?任何建议将不胜感激!
有时,我想以 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)
这里有一个插图(不适合这个例子):
我想使用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) 下图是使用露天R套件绘制的:
我知道matplotlib有这个plt.matshow功能,
但它不能同时清楚地显示变量之间的关系.
这是我早期的工作:
df是一个带有7个变量的pandas数据框,如下所示:
我不知道如何将.csv文件附加到StackOverflow.
使用plt.matshow(df.corr(),cmap = plt.cm.Greens),图中显示如下:
第二个数字不能像第一个数字一样清楚地表示变量的相关关系.
我在这里将csv文件上传到Google文档.
我有一个(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 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 ×10
matplotlib ×8
numpy ×3
pandas ×2
arrays ×1
correlation ×1
csv ×1
gis ×1
histogram ×1
jupyter ×1
k-means ×1
python-2.7 ×1
python-3.x ×1
scikit-learn ×1
seaborn ×1
shapefile ×1