由于某种原因,使用 Altair 绘图时的 Y 轴似乎是反转的(预计值从绘图的较低(底部)到较高(顶部))。另外,我希望能够更改滴答频率。对于旧版本,我可以使用ticks=n_ticks,但现在看来这个参数只能采用布尔值。
import altair as alt\nalt.renderers.enable(\'notebook\')\n\neff_metals = pd.read_excel(filename, sheet_name=\'summary_eff_metals\')\npoints = alt.Chart(eff_metals, height=250, width=400).mark_circle().encode(\n x=alt.X(\'Temperature:Q\',axis=alt.Axis(title=\'Temperature (\xc2\xb0C)\'),\n scale=alt.Scale(zero=False, padding=50)),\n y=alt.Y(\'Efficiency:N\',axis=alt.Axis(title=\'Efficiency (%)\'),\n scale=alt.Scale(zero=False, padding=1)),\n color=alt.Color(\'Element:N\'),\n)\ntext = points.mark_text(align=\'right\', dx=0, dy=-5).encode(\n text=\'Element:N\'\n)\nchart = alt.layer(points, text, data=eff_metals, \n width=600, height=300)\nchart\nRun Code Online (Sandbox Code Playgroud)\n\n Warning: React does not recognize the `initialValue` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `initialvalue` instead. If you accidentally passed it from a parent component, remove it from the DOM element.
in input (created by PostsNew)
in div (created by PostsNew)
in form (created by PostsNew)
in PostsNew (created by ReduxForm(PostsNew))
in ReduxForm(PostsNew) (created by Connect(ReduxForm(PostsNew)))
in Connect(ReduxForm(PostsNew)) (created by ReduxFormConnector(PostsNew))
in ReduxFormConnector(PostsNew) (created …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的图转换为Seaborn,但我遇到了多个条形图的问题。数据是列表的列表,如下所示:
raw_data = [[47.66773437098896, 47.585408826566024, 45.426437828641106, 44.955787935926836],
[47.700582993718115, 47.59796443553682, 45.38896827262796, 44.80916093973529],
[47.66563311651776, 47.476571906259835, 45.21460968763448, 44.78683755963528],
[47.248523637295705, 47.42573841363118, 45.52890109500238, 45.10243082784969],
[47.14532745960979, 47.46958795222966, 45.4804195003332, 44.97715435208194],
[46.61620129160194, 47.316775886868584, 45.053032014046366, 44.527497508033704]]
Run Code Online (Sandbox Code Playgroud)
我的简单seaborn脚本如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def plot_sns(raw_data):
data = np.array(raw_data)
x = np.arange(len(raw_data))
width = 0.2 # width of bar
sns.axes_style('white')
sns.set_style('white')
ax = sns.barplot(x, data[:,0])
Run Code Online (Sandbox Code Playgroud)
我想在图表中并排添加更多条形(每组 4 个条形)。在 Matplotlib 中,我通过绘制右侧间隔的另一个条形来实现这一点,但在 Seaborn 中它不起作用。我看到的所有示例都使用 Pandas 数据框。
我在向绘图中添加对数 X 轴时遇到问题。我想使用方法显示基于样本大小的结果A,B并且C.
我的数据框:
A B C
15 0.733333 0.613333 0.733333
30 0.716667 0.693333 0.766667
59 0.733684 0.678485 0.745763
118 0.796667 0.726087 0.779661
236 0.817862 0.788333 0.838983
470 0.832125 0.814468 0.836170
Run Code Online (Sandbox Code Playgroud)
我正在努力做的事情:
sample_count = np.around(np.logspace(math.log10(15),math.log10(470),6))
sample_count = sample_count.astype(int)
sns.set_style('whitegrid')
g_results=sns.lineplot(data=results,dashes=0,markers=['o','o','o'])
g_results.set(xticks=sample_count)
g_results.set(xscale='log')
Run Code Online (Sandbox Code Playgroud)
然而,结果并不是我真正想要的,因为滴答声完全消失了:
如果没有最后xscale一行,它看起来像这样,当然这是线性比例,但这次使用正确的刻度:
我想要实现的是这样的:
我很感激你对我的问题的帮助。
如何parametrize在类中组织的测试中使用 pytest 中的属性?
import pytest
class TestA:
@pytest.fixture(autouse=True)
def set_up(self):
self.field1 = "field1"
self.field2 = "field2"
@pytest.mark.parametrize("field", (self.field1, self.field2))
def test_print_field(self, field):
print(field, flush=False)
Run Code Online (Sandbox Code Playgroud)
我越来越NameError: name 'self' is not defined。
import matplotlib as plt
import seaborn as sns
pallete = sns.color_palette("tab10", 3)
Run Code Online (Sandbox Code Playgroud)
在 python 中,这给出了 tab10 颜色图中的前三种颜色。我怎样才能使用其他颜色?例如,我不想使用 tab10 的前三种颜色,而是使用第 1、2 和 4 种颜色。或者,我想使用第 1 个、第 6 个和第 8 个。是否可以?感谢您的关心。
sdf = df.to_sparse()已被弃用。转换为稀疏 DataFrame 的更新方法是什么?
我想用人们的年龄替换列中的缺失值(其中还包含数值,而不仅仅是 NaN 值),但到目前为止我尝试过的所有内容要么无法按照我想要的方式工作,要么无法在全部。
我希望应用一个随机变量生成器,它使用该列获得的平均值和标准差遵循正态分布。
我已经尝试过以下方法:
替换为 numpy,替换 NaN 值,但所有值都使用相同的数字
df_travel['Age'] = df_travel['Age'].replace(np.nan, round(rd.normalvariate(age_mean, age_std),0))
Run Code Online (Sandbox Code Playgroud)
用 pandas 填充 NaN,也替换 NaN 值,但所有值都使用相同的数字
df_travel['Age'] = df_travel['Age'].fillna(round(rd.normalvariate(age_mean, age_std),0))
Run Code Online (Sandbox Code Playgroud)
使用 pandas 在数据帧上应用函数,替换 NaN 值,但也更改所有现有数值(我只想填充 NaN 值)
df_travel['Age'] = df_travel['Age'].where(df_travel['Age'].isnull() == True).apply(lambda v: round(rd.normalvariate(age_mean, age_std),0))
Run Code Online (Sandbox Code Playgroud)
任何想法,将不胜感激。提前致谢。
我有一个数据框,我正在使用 seabornpairplot来绘制一个目标列与其余列的对比。
代码如下,
import seaborn as sns
import matplotlib.pyplot as plt
tgt_var = 'AB'
var_lst = ['A','GH','DL','GT','MS']
pp = sns.pairplot(data=df,
y_vars=[tgt_var],
x_vars=var_lst)
pp.fig.set_figheight(6)
pp.fig.set_figwidth(20)
Run Code Online (Sandbox Code Playgroud)
这var_lst不是静态列表,我只是提供了一个示例。tgt_var我需要的是在 Y 轴上绘制,var_lst在 x 轴上绘制。
我可以使用上面的代码来做到这一点,但我也想仅当项目var_lst是“GH”或“MS”时才在 X 轴上使用对数刻度,对于其余的正常刻度。有什么办法可以实现这一点吗?
我想在中间有文本的两点之间添加注释,并旋转文本以与线对齐。当前示例未按预期旋转:
import matplotlib.pyplot as plt
import numpy as np
def ann_distance(ax,xyfrom,xyto,text=None):
midx = (xyto[0]+xyfrom[0])/2
midy = (xyto[1]+xyfrom[1])/2
if text is None:
text = str(np.sqrt( (xyfrom[0]-xyto[0])**2 + (xyfrom[1]-xyto[1])**2 ))
ax.annotate("",xyfrom,xyto,arrowprops=dict(arrowstyle='<->'))
p1 = ax.transData.transform_point((xyfrom[0], xyfrom[1]))
p2 = ax.transData.transform_point((xyto[0], xyto[1]))
rotn = np.degrees(np.arctan2(p2[1]-p1[1], p2[0]-p1[0]))
ax.text(midx,midy,text,ha='center', va='bottom',rotation=rotn,fontsize=16)
return
x = np.linspace(0,2*np.pi,100)
width = 800
height = 600
fig, ax = plt.subplots()
ax.plot(x,np.sin(x))
ann_distance(plt.gca(),[np.pi/2,1],[2*np.pi,0],'$sample$')
plt.show()
Run Code Online (Sandbox Code Playgroud)
python ×9
matplotlib ×3
seaborn ×3
dataframe ×2
pandas ×2
altair ×1
axis ×1
bar-chart ×1
javascript ×1
line-plot ×1
nan ×1
node.js ×1
pairplot ×1
pytest ×1
python-3.x ×1
random ×1
reactjs ×1
redux-form ×1