小编Mic*_*elA的帖子

找不到matplotlib字体

我正在尝试在matplotlib图中使用字体"Heuristica",但它不会显示出来.

我在rcParameter font.serif的第一个地方定义了"Heuristica" - >没有结果

我将font.family改为"Heuristica"并得到了消息

findfont: FontFamily not found
Run Code Online (Sandbox Code Playgroud)

这让我思考,因为安装了Heuristica,我可以毫无问题地从其他软件访问它.所以我使用了fontManager并做了:

import pylab as pl
la = pl.matplotlib.font_manager.FontManager()
lu = pl.matplotlib.font_manager.FontProperties(family = 'Heuristica')
la.findfont(lu)
Run Code Online (Sandbox Code Playgroud)

得到了:

Out[7]: 'C:\\Windows\\Fonts\\Heuristica-Regular.otf'
Run Code Online (Sandbox Code Playgroud)

所以很明显可以找到Heuristica.我查找了可用的ttf-Fonts(如何获取matplotlib中的字体系列列表(或字体名称))但是Heuristica不在此列表中.

任何帮助我都会很高兴.

python fonts matplotlib

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

使用 holoviews/hvplot 创建绘图网格并设置最大列数

我想使用 Holoviews/hvplot 基于一维将多个数据绘制到网格中,其中包含多个唯一的数据点。

考虑这个例子:

import seaborn as sns
import hvplot.pandas

iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
hvplot.show(plot)
Run Code Online (Sandbox Code Playgroud)

上面的代码根据鸢尾花数据集的物种部分创建了几个图,结果如下图:
列太多的 hvplot 网格空间示例

但现在想象一下,这里不是 3 个不同的物种,而是 20 个。情节会变得很宽,所以我想在几个情节之后打破界限。但我找不到任何“最大列”参数。普通网格需要另一列来定义我没有的行。

任何建议都会有所帮助。

python holoviews hvplot holoviz

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

使用pandas Dataframe计算状态的持续时间

我试着计算一个州进入的频率和持续的时间.例如,我有三个可能的状态1,2和3,状态为活动状态记录在pandas Dataframe中:

test = pd.DataFrame([2,2,2,1,1,1,2,2,2,3,2,2,1,1], index=pd.date_range('00:00', freq='1h', periods=14))
Run Code Online (Sandbox Code Playgroud)

例如,状态1输入两次(在索引3和12处),第一次持续三小时,第二次输入两小时(因此平均为2.5).状态2输入3次,平均为2.66小时.

我知道我可以屏蔽我不感兴趣的数据,例如分析状态1:

state1 = test.mask(test!=1)
Run Code Online (Sandbox Code Playgroud)

但从那以后我找不到办法继续下去.

python pandas

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

matplotlib GridSpec 中的行标题

我有一个 GridSpec 定义的布局与子网格,一个应该包括一个颜色条

import pylab as plt
import numpy as np
gs_outer = plt.GridSpec(1, 2, width_ratios=(10, 1))
gs_inner = plt.matplotlib.gridspec.GridSpecFromSubplotSpec(2, 3, gs_outer[0])
ax = []
for i in xrange(6):
    ax.append(plt.subplot(gs_inner[i]))
    plt.setp(ax[i].get_xticklabels(), visible=False)
    plt.setp(ax[i].get_yticklabels(), visible=False)
ax.append(plt.subplot(gs_outer[1]))
plt.show()
Run Code Online (Sandbox Code Playgroud)

我现在想为左侧部分设置一个像这样的逐行标签:在此处输入图片说明

我尝试将另一个 GridSpec 添加到 GridSpec 中,但没有成功:

import pylab as plt
import numpy as np
fig = plt.figure()
gs_outer = plt.GridSpec(1, 2, width_ratios=(10, 1))
gs_medium = plt.matplotlib.gridspec.GridSpecFromSubplotSpec(3, 1, gs_outer[0])
ax_title0 = plt.subplot(gs_medium[0])
ax_title0.set_title('Test!')
gs_row1 = plt.matplotlib.gridspec.GridSpecFromSubplotSpec(1, 3, gs_medium[0])
ax00 = plt.subplot(gs_row1[0]) # toggle this line …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

使用 hvplot/holoviews 更改分组条形图中条形的顺序

我尝试创建分组条形图,但无法弄清楚如何影响条形图的顺序。

给定这些示例数据:

import pandas as pd
import hvplot.pandas

df = pd.DataFrame({
    "lu": [200, 100, 10], 
    "le": [220, 80, 130], 
    "la": [60, 20, 15], 
    "group": [1, 2, 2],
})
df = df.groupby("group").sum()
Run Code Online (Sandbox Code Playgroud)

我想创建一个水平分组条形图,显示两个组 1 和 2 以及所有三列。列应按“le”、“la”和“lu”的顺序出现。

当然,我会尝试使用 Hvplot:

df.hvplot.barh(x = "group", y = ["le", "la", "lu"])
Run Code Online (Sandbox Code Playgroud)

这样我得到下面的结果: 分组条形图顺序错误 hvplot

Hvplot 似乎并不关心我添加列的顺序(调用df.hvplot.barh(x = "group", y = ["lu", "le", "la"])不会改变任何内容。Hvplot 似乎也不关心数据框中的原始顺序。

是否有任何选项可以影响条形的顺序?

python bokeh holoviews hvplot holoviz

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

筛选Pandas DataFrame中列表中的元素

我有一个熊猫DataFrame,其中包含值和其他信息。我希望能够提取仅属于一种信息的值。我不知道将要查询哪些值和多少个值。因此,有可能仅一次调用带有附加信息“ foo”的值,有时调用带有附加信息“ bar”和“ baz”的值,因此使用简化的DataFrame

import pandas as pd
df = pd.DataFrame(
    [[1, 'foo'], [2, 'bar'], [3, 'baz']], columns=['value', 'id'])
Run Code Online (Sandbox Code Playgroud)

我试过了

result = df[df.id in ['foo', 'bar']]
Run Code Online (Sandbox Code Playgroud)

但是我只是得到一个ValueError:系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。但是我无法使用any()函数给我结果...。

python pandas

4
推荐指数
1
解决办法
6888
查看次数

在同一图上绘制方法到许多可能的轴

我创建了一些类供其他用户使用和提供便利功能,以便轻松获得一个图,包括图形和轴生成.

import pylab as plt
def plot_something():
    fig, ax = plt.subplots()
    plt.plot(xrange(10), axes=ax)
    return fig, ax
def even_more_impressive_plot():
    fig, ax = plt.subplots()
    plt.plot([x**2 for x in xrange(10)], axes=ax)
    return fig, ax
Run Code Online (Sandbox Code Playgroud)

但是,有一个疯狂的用户,希望能够使用这些情节,但在一个数字并排,我的第一个想法没有成功:

desired_fig, desired_axes = plt.subplots(2)
dummy_fig, dummy_ax = plot_something()
dummy_fig2, dummy_ax2 = even_more_impressive_plot()
desired_axes[0] = dummy_ax
desired_axes[1] = dummy_ax2
plt.show()
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,这使得理想的空闲了.是否有一个简单的方法或我必须拆分这样的方法:

def _plot_something(ax):
    plt.plot(xrange(10), axes=ax)

def plot_something2():
    fig, ax = plt.subplots()
    _plot_something(ax)
    return fig, ax
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
1
解决办法
3291
查看次数

使用 hvplot 在散点图中悬停时显示额外的列

我正在尝试向散点图中的点添加标签或悬停列,但无济于事。

用作示例数据:

import pandas as pd
import holoviews as hv
import hvplot.pandas

df = pd.read_csv('http://assets.holoviews.org/macro.csv', '\t')

df.query("year == 1966").hvplot.scatter(x="gdp", y="unem")
Run Code Online (Sandbox Code Playgroud)

结果如下图。如果我将鼠标悬停在此项目上,我将看不到该点代表哪个国家(这使它变得毫无用处)。我可以color="country"在散点图调用中使用附加关键字。这将导致额外的图例(可以关闭)并且值 country: countryname 被添加到悬停字段中。

国内生产总值与失业率的散点图,缺少国家指标

是否有一个选项可以将列添加到我的悬停而不添加图例和更改颜色?

python hvplot holoviz

3
推荐指数
1
解决办法
1017
查看次数

标签 统计

python ×8

holoviz ×3

hvplot ×3

matplotlib ×3

holoviews ×2

pandas ×2

bokeh ×1

fonts ×1