我刚用conda来更新我的Anaconda安装,Matplotlib从v1.4.0升级到v1.4.2.但是现在我使用Matplotlib.pyplot的所有Python作业都抛出异常.
即使是简单的命令:
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
抛出TypeError
异常,说:
无法从Unicode对象返回std :: string
回溯告诉我在font_manager.py文件中发生了异常,这里:
try:
font = ft2font.FT2Font(fpath)
except RuntimeError:
verbose.report("Could not open font file %s" % fpath)
continue
except UnicodeError:
verbose.report("Cannot handle unicode filenames")
continue
Run Code Online (Sandbox Code Playgroud)
特别是在线font = ft2font.FT2Font(fpath)
.
我尝试回到Matplotlib的v1.4.0,但它没有解决问题.
然后我编辑了font_manager.py来添加一般的异常情况:
except:
verbose.report("Some stupid error occurred")
continue
Run Code Online (Sandbox Code Playgroud)
希望它会暂时解决它所遇到的问题,但是这个错误或者与之类似的错误会在以后发生.所以我删除了异常,但错误现在仍然发生在代码的后一点(所以如果我运行import matplotlib.pyplot as plt
它,但执行其他命令可能会失败).
我使用Matplotlib全天生成/更新数百个图表,现在一切都坏了.
请帮忙!谢谢!
我最近将我的seaborn从0.5.1更新到新的0.6.0版本.我一直在使用seaborn在python笔记本中制作盒子图和小提琴图,现在我似乎无法使我的代码工作了.Matplotlib plt.boxplot
仍然适用于我的数据.特别是,当我有一组列表或数组,其中子集的大小不同时,似乎会出现问题.
例如:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.array([1,3,4]), ([1,2])
plt.boxplot(x) #this works
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.array([1,3,4]), ([1,2])
sns.boxplot(x) #doesn't work
Run Code Online (Sandbox Code Playgroud)
这是我尝试seaborn box plot时得到的错误
ValueError:boxplot统计信息列表和`position`值必须具有相同的长度
在新的seaborn教程中,它说sns.boxplot
应该采取一切措施plt.boxplot
.有没有人有同样的更新问题?有没有办法使这项工作?如果没有,有没有办法安装0.6.0版本和0.5.1版本并在某些笔记本电脑中调用特定版本?
我突然遇到了这个,我无法理解为什么会这样!
在python提示符下,使用**
3以后的运算符,如下所示给出错误的结果.即
>>> 2**2**2
16
>>> 3**3**3
7625597484987L
>>> 4**4**4
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096L
Run Code Online (Sandbox Code Playgroud)
然后我认为我必须使用括号,所以我使用它,它给出了正确的结果.
>>>(3**3)**3
19683
Run Code Online (Sandbox Code Playgroud)
但是,//
操作员在这种操作中支持并给出正确的结果,即
>>> 4//4//4
0
>>> 40//4//6
1
Run Code Online (Sandbox Code Playgroud)
请帮我理解.
在我的应用程序中,我有一个模型,我只在运行时知道它的列数。使用Factory
如下函数创建模型可以很好地解决这个问题。但是,如果我多次使用它(可能有不同的字段),外键的创建ref
会引发异常:
AttributeError: Foreign key: dynamictable.ref related name "dynamictable_set"
collision with foreign key using same related_name.
Run Code Online (Sandbox Code Playgroud)
该消息非常清楚,当我related_name
在创建外键时设置参数时没有错误。
问题:
为什么我不能related_name
第二次使用相同的?我也需要重新定义StaticTable
吗?
有没有更好的方法来使用动态模型写入多个数据库?
最小的、可重现的例子:
import peewee
database_proxy = peewee.Proxy()
class BaseModel(peewee.Model):
class Meta:
database = database_proxy
class StaticTable(BaseModel):
foo = peewee.DoubleField()
def Factory(fields):
class DynamicTable(BaseModel):
ref = peewee.ForeignKeyField(StaticTable)
for field in fields:
peewee.DoubleField().add_to_class(DynamicTable, field)
return DynamicTable
def Test(fname, fields):
db = peewee.SqliteDatabase(fname)
database_proxy.initialize(db)
db.create_table(StaticTable)
dyntable = Factory(fields)
db.create_table(dyntable)
db.close()
Test(':memory:', ['foo', 'bar'])
Test(':memory:', …
Run Code Online (Sandbox Code Playgroud) 我正试图访问matplotlib图的阴影区域,以便我可以删除它而不用plt.cla()
[因为cla()
清除包括轴标签在内的整个轴]
如果我正在策划我的行,我可以这样做:
import matplotlib.pyplot as plt
ax = plt.gca()
ax.plot(x,y)
ax.set_xlabel('My Label Here')
# then to remove the line, but not the axis label
ax.lines.pop()
Run Code Online (Sandbox Code Playgroud)
但是,为了绘制我执行的区域:
ax.fill_between(x, 0, y)
Run Code Online (Sandbox Code Playgroud)
所以ax.lines
是空的.
我该如何清除这个阴影区域?
问题感觉它的措辞很差,如果你同意的话可以随意调整它,并且知道如何更好地表达它.
我有以下代码:
def owned_calendars(cal_items):
"""Returns only the calendars in which the user is marked as "owner"
"""
owner_cals = []
for entry in cal_items:
if entry['accessRole'] == "owner":
owner_cals.append(cal_items[cal_items.index(entry)])
return owner_cals
Run Code Online (Sandbox Code Playgroud)
cal_items
是list
的dictionaries
在我写的行中,我owner_cals.append(cal_items[cal_items.index(entry)])
试图附加具有该属性的字典accessRole = owner
.
这条线似乎超长而且笨重,我想知道是否有更容易/更直观的方法来做到这一点?
matplotlib ×3
python ×3
python-2.7 ×2
boxplot ×1
fill ×1
for-loop ×1
peewee ×1
plot ×1
seaborn ×1
stdstring ×1
typeerror ×1
violin-plot ×1