我正在尝试在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不在此列表中.
任何帮助我都会很高兴.
我想使用 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)
上面的代码根据鸢尾花数据集的物种部分创建了几个图,结果如下图:

但现在想象一下,这里不是 3 个不同的物种,而是 20 个。情节会变得很宽,所以我想在几个情节之后打破界限。但我找不到任何“最大列”参数。普通网格需要另一列来定义我没有的行。
任何建议都会有所帮助。
我试着计算一个州进入的频率和持续的时间.例如,我有三个可能的状态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)
但从那以后我找不到办法继续下去.
我有一个 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) 我尝试创建分组条形图,但无法弄清楚如何影响条形图的顺序。
给定这些示例数据:
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 似乎并不关心我添加列的顺序(调用df.hvplot.barh(x = "group", y = ["lu", "le", "la"])不会改变任何内容。Hvplot 似乎也不关心数据框中的原始顺序。
是否有任何选项可以影响条形的顺序?
我有一个熊猫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()函数给我结果...。
我创建了一些类供其他用户使用和提供便利功能,以便轻松获得一个图,包括图形和轴生成.
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) 我正在尝试向散点图中的点添加标签或悬停列,但无济于事。
用作示例数据:
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 被添加到悬停字段中。
是否有一个选项可以将列添加到我的悬停而不添加图例和更改颜色?