相关疑难解决方法(0)

如何将传说从情节中删除

我有一系列20个图(不是子图)可以在一个图中制作.我希望传说能够在盒子之外.同时,我不想改变轴,因为图形的大小减少了.请帮助我以下查询:

  1. 我想将情节框保留在情节区域之外.(我希望传说位于情节区域的右侧).
  2. 无论如何,我减少了图例框内文本的字体大小,因此图例框的大小会很小.

python matplotlib legend

866
推荐指数
15
解决办法
68万
查看次数

Matplotlib(pyplot)savefig输出空白图像

我正在尝试使用matplotlib保存我的图表; 但是,图像保存为空白.

这是我的代码:

plt.subplot(121)
plt.imshow(dataStack, cmap=mpl.cm.bone)

plt.subplot(122)
y = copy.deepcopy(tumorStack)
y = np.ma.masked_where(y == 0, y)

plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest')

if T0 is not None:
    plt.subplot(123)
    plt.imshow(T0, cmap=mpl.cm.bone)

    #plt.subplot(124)
    #Autozoom

#else:
    #plt.subplot(124)
    #Autozoom

plt.show()
plt.draw()
plt.savefig('tessstttyyy.png', dpi=100)
Run Code Online (Sandbox Code Playgroud)

并且tessstttyyy.png是空白的(也尝试使用.jpg)

python image matplotlib figure

136
推荐指数
4
解决办法
13万
查看次数

Pandas/Pyplot中的散点图:如何按类别绘制

我正在尝试使用Pandas DataFrame对象在pyplot中创建一个简单的散点图,但是想要一种有效的方法来绘制两个变量,但是具有由第三列(键)指示的符号.我尝试过使用df.groupby的各种方法,但没有成功.下面是一个示例df脚本.这会根据'key1'为标记着色,但Id喜欢看到带有'key1'类别的图例.我接近了吗?谢谢.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.normal(10,1,30).reshape(10,3), index = pd.date_range('2010-01-01', freq = 'M', periods = 10), columns = ('one', 'two', 'three'))
df['key1'] = (4,4,4,6,6,6,8,8,8,8)
fig1 = plt.figure(1)
ax1 = fig1.add_subplot(111)
ax1.scatter(df['one'], df['two'], marker = 'o', c = df['key1'], alpha = 0.8)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

73
推荐指数
6
解决办法
12万
查看次数

使用matplotlib的savefig保存从python pandas生成的图(AxesSubPlot)

我正在使用pandas从数据框生成一个图,我想将其保存到文件中:

dtf = pd.DataFrame.from_records(d,columns=h)
fig = plt.figure()
ax = dtf2.plot()
ax = fig.add_subplot(ax)
fig.savefig('~/Documents/output.png')
Run Code Online (Sandbox Code Playgroud)

似乎最后一行,使用matplotlib的savefig,应该可以解决问题.但该代码产生以下错误:

Traceback (most recent call last):
  File "./testgraph.py", line 76, in <module>
    ax = fig.add_subplot(ax)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 890, in add_subplot
    assert(a.get_figure() is self)
AssertionError
Run Code Online (Sandbox Code Playgroud)

或者,尝试直接在绘图上调用savefig也会出错:

dtf2.plot().savefig('~/Documents/output.png')


  File "./testgraph.py", line 79, in <module>
    dtf2.plot().savefig('~/Documents/output.png')
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Run Code Online (Sandbox Code Playgroud)

我想我需要以某种方式将plot()返回的子图添加到图中以便使用savefig.我也想知道如果这或许与该做魔术的AxesSubPlot类的后面.

编辑:

以下作品(没有提出任何错误),但留下了一个空白页面图像....

fig = plt.figure()
dtf2.plot()
fig.savefig('output.png')
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

图例按组着色的散点图,无需多次调用plt.scatter

pyplot.scatter允许传递到c=与组相对应的数组,然后将根据这些组为点着色。但是,这似乎不支持不单独绘制每个组而生成图例。

因此,例如,可以通过遍历各组并分别绘制每个图来生成带有彩色组的散点图:

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
feats = load_iris()['data']
target = load_iris()['target']

f, ax = plt.subplots(1)
for i in np.unique(target):
    mask = target == i
    plt.scatter(feats[mask, 0], feats[mask, 1], label=i)
ax.legend()
Run Code Online (Sandbox Code Playgroud)

会产生:

在此处输入图片说明

我可以实现类似外观的情节而无需遍历每个组:

f, ax = plt.subplots(1)
ax.scatter(feats[:, 0], feats[:, 1], c=np.array(['C0', 'C1', 'C2'])[target])
Run Code Online (Sandbox Code Playgroud)

但是我无法找到第二种策略来生成相应图例的方法。我遇到的所有示例都在各个组之间进行迭代,这似乎不理想。我知道我可以手动生成图例,但这又显得太麻烦了。

python scatter matplotlib legend

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

标签 统计

matplotlib ×5

python ×5

legend ×2

pandas ×2

figure ×1

image ×1

scatter ×1