我正在学习matplotlib通过学习示例来学习,并且在创建单个绘图之前,许多示例似乎包括如下所示的行...
fig, ax = plt.subplots()
Run Code Online (Sandbox Code Playgroud)
这里有些例子...
我看到这个函数用了很多,尽管这个例子只是试图创建一个图表.还有其他一些优势吗?官方演示subplots()也用于f, ax = subplots创建单个图表时,它之后只引用了ax.这是他们使用的代码.
# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
Run Code Online (Sandbox Code Playgroud) 我正在将具有两列(A和B)的记录列表转换为矩阵表示.我一直在使用pandas中的pivot函数,但结果却相当大.pandas是否支持转换为稀疏格式?我知道我可以转动它然后把它变成某种稀疏表示,但不像我想的那样优雅.我的最终目标是将其用作预测模型的输入.
或者,在熊猫之外是否存在某种稀疏枢轴能力?
编辑:这是一个非稀疏数据透视的示例
import pandas as pd
frame=pd.DataFrame()
frame['person']=['me','you','him','you','him','me']
frame['thing']=['a','a','b','c','d','d']
frame['count']=[1,1,1,1,1,1]
frame
person thing count
0 me a 1
1 you a 1
2 him b 1
3 you c 1
4 him d 1
5 me d 1
frame.pivot('person','thing')
count
thing a b c d
person
him NaN 1 NaN 1
me 1 NaN NaN 1
you 1 NaN 1 NaN
Run Code Online (Sandbox Code Playgroud)
这创建了一个矩阵,可以包含所有可能的人和事物的组合,但它并不稀疏.
http://docs.scipy.org/doc/scipy/reference/sparse.html
稀疏矩阵占用的空间较少,因为它们可能意味着NaN或0之类的东西.如果我有一个非常大的数据集,这个旋转函数可以生成一个由于大量NaN或0而应该稀疏的矩阵.我希望通过生成一些稀疏的东西而不是创建一个密集矩阵然后将其转换为稀疏来节省大量空间/内存.
我正在尝试在c3.js中创建一个包含百分比的图表,但y轴范围似乎已被打破.无论我做什么,最小值/最大值似乎都会增加15.
下面的代码绘制了从0到15的东西.如果我将y max设置为10,它会开始上升到25.真是令人气愤.
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="/js/c3.js"></script>
<script>
var chart = c3.generate({
data: {
columns: [
['PC', 0.038, 0.067],
['Tablet', 0.038, 0.056],
['Mobile',0.027,0.039]
],
type: 'bar',
labels: {
format: {
y: d3.format(".1%"),
}}
},
axis: {
x: {
type: 'categorized',
categories: ['Unique Click Rate','Total Click Rate']
},
y: {
max: .1,
min: 0
}
},
bar: {
width: {
ratio: 0.5,
},
}
});
setTimeout(function () {
chart.data.colors({PC: '#2C9AB7',Tablet: '#FEBE12', Mobile: '#DB3A1B'});
}, 1000);
</script>
Run Code Online (Sandbox Code Playgroud) 我使用 Python、Pillow(PIL 的一个分支)和 cairo 创建了一个简短的动画。当前动画为 334 帧。我可以使用以下代码保存单个帧...
frame_images[0].save('test_frame.gif')
Run Code Online (Sandbox Code Playgroud)
我会得到一个 34 kb 的文件。我一直在使用枕头中的 save_all 选项创建 gif...
frame_images[0].save('test.gif', save_all=True, append_images=frame_images[1:], loop=0)
Run Code Online (Sandbox Code Playgroud)
结果并没有按预期工作。输出为 22.8 MB,是单帧大小的两倍多 334,质量大幅下降。图像上到处都是伪影,有几帧有前一帧的残留物,并且项目的颜色经常显示不正确。
有人对解决此问题有任何建议吗?我应该只用 Pillow 来保存静止帧,然后使用不同的库来创建 gif 吗?
我试图使用groupby和np.std来计算标准偏差,但它似乎是计算样本标准偏差(自由度等于1).
这是一个例子.
#create dataframe
>>> df = pd.DataFrame({'A':[1,1,2,2],'B':[1,2,1,2],'values':np.arange(10,30,5)})
>>> df
A B values
0 1 1 10
1 1 2 15
2 2 1 20
3 2 2 25
#calculate standard deviation using groupby
>>> df.groupby('A').agg(np.std)
B values
A
1 0.707107 3.535534
2 0.707107 3.535534
#Calculate using numpy (np.std)
>>> np.std([10,15],ddof=0)
2.5
>>> np.std([10,15],ddof=1)
3.5355339059327378
Run Code Online (Sandbox Code Playgroud)
有没有办法使用群体标准计算(ddof = 0)和groupby语句?我使用的记录不是(不是上面的示例表)不是样本,所以我只对群体标准偏差感兴趣.
我正在使用 python 来解决学习排序问题,并且我正在使用以下 DCG 和 NDCG 代码(来自http://nbviewer.ipython.org/github/ogrisel/notebooks/blob/master/Learning %20to%20Rank.ipynb )
def dcg(relevances, rank=20):
relevances = np.asarray(relevances)[:rank]
n_relevances = len(relevances)
if n_relevances == 0:
return 0.
discounts = np.log2(np.arange(n_relevances) + 2)
return np.sum(relevances / discounts)
def ndcg(relevances, rank=20):
best_dcg = dcg(sorted(relevances, reverse=True), rank)
if best_dcg == 0:
return 0.
return dcg(relevances, rank) / best_dcg
Run Code Online (Sandbox Code Playgroud)
以下是 3 个项目列表中最好和最坏情况的 DCG 值,没有重复的排名...
>>> ndcg(np.asarray([3,2,1]))
1.0
>>> ndcg(np.asarray([1,2,3]))
0.78999800424603583
Run Code Online (Sandbox Code Playgroud)
我们可以使用这个指标来比较两个排名,看看哪个更好。但是,如果我计算 4 项列表的最坏情况......
>>> ndcg(np.asarray([1,2,3,4]))
0.74890302967841715
Run Code Online (Sandbox Code Playgroud)
4 项列表似乎不再与 3 项列表具有可比性。
我还计算了两个替代的 NDCG。NDCG2 将获得的 dcg 与 bot …
python information-retrieval machine-learning ranking-functions supervised-learning
我有一个非常简单的c3js饼图,但白色标签在馅饼的黄色切片内丢失(具有该颜色).有没有办法改变那个标签的颜色?或者,有没有办法改变所有标签的颜色?
var chart = c3.generate({
data: {
columns: [
['PC', 25077394],
["Tablet", 3240595],
["Mobile", 6427981],
],
type : 'pie'
},
legend: {
position: 'bottom'
},
axis: {
x: {
label: 'Sepal.Width'
},
y: {
label: 'Petal.Width'
}
},
});
setTimeout(function () {
chart.data.colors({PC: '#2C9AB7',Tablet: '#FEBE12', Mobile: '#DB3A1B'});
}, 1000);
Run Code Online (Sandbox Code Playgroud) python ×5
c3.js ×2
pandas ×2
animated-gif ×1
css ×1
gif ×1
javascript ×1
matplotlib ×1
numpy ×1
pillow ×1
plot ×1
scikit-learn ×1
scipy ×1
statistics ×1