我正在寻找一种seaboarn通过指定fmt关键字在的热图上将“0.0045”显示为“0.45%”的方法:
sns.heatmap(data, annot=True, fmt='??')
Run Code Online (Sandbox Code Playgroud)
但是,我没有找到要使用的格式列表。在不同的示例之间搜索,我看到了“d”、“.2g”、“.1f”、“.1f%”。但不清楚我们在这里假设的约定是什么。
这是假设人们对格式格式有共同的理解吗?或者这出现在我错过的文档页面上?
我已经找到了一个明确的答案并且找不到一个,如果之前有人问过,我道歉.我正在使用seaborn 0.6和matplotlib 1.4.3.我想在ipython笔记本中创建许多数字时暂时改变绘图的样式.
具体来说,在这个例子中,我想基于每个图更改字体大小和背景样式.
这创建了我正在寻找的图,但是全局定义了参数:
import seaborn as sns
import numpy as np
x = np.random.normal(size=100)
sns.set(style="whitegrid", font_scale=1.5)
sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)
然而这失败了:
with sns.set(style="whitegrid", font_scale=1.5):
sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)
有:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-10-70c5b03f9aa8> in <module>()
----> 1 with sns.set(style="whitegrid", font_scale=1.5):
2 sns.kdeplot(x, shade=True);
AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
with sns.axes_style(style="whitegrid", rc={'font.size':10}):
sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)
哪个不会失败,但它也不会改变字体的大小.任何帮助将非常感激.
下面我有以下脚本创建一个简单的时间序列图:
%matplotlib inline
import datetime
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
for j in [1,2]:
unit = 'Ones' if j == 1 else 'Twos'
date = start_date + datetime.timedelta(days=i)
df.append({
'Date': date.strftime('%Y%m%d'),
'Value': i * j,
'Unit': unit
})
df = pd.DataFrame(df)
sns.tsplot(df, time='Date', value='Value', unit='Unit', ax=ax)
fig.autofmt_xdate()
Run Code Online (Sandbox Code Playgroud)
结果如下:

正如你所看到的那样,x轴的日期时间有奇怪的数字,而不是常见的"漂亮"表示matplotlib和其他绘图工具.我已经尝试了很多东西,重新格式化数据,但它永远不会干净.有人知道的方法吗?
我无法在海边拍摄一个画布.这是我可重复的数据:
people = ['Hannah', 'Bethany', 'Kris', 'Alex', 'Earl', 'Lori']
reputation = ['awesome', 'cool', 'brilliant', 'meh', 'awesome', 'cool']
dictionary = dict(zip(people, reputation))
df = pd.DataFrame(dictionary.values(), dictionary.keys())
df = df.rename(columns={0:'reputation'})
Run Code Online (Sandbox Code Playgroud)
然后我想得到一个条形图,显示不同声誉的价值计数.我试过了:
sns.barplot(x = 'reputation', y = df['reputation'].value_counts(), data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)
和
sns.barplot(x = 'reputation', y = df['reputation'].value_counts().values, data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)
但两者都返回空白图.
知道我能做些什么才能得到这个吗?
是否可以仅显示顶部/底部n组sns.countplot()?
使用seaborn网站上的一个例子,
sns.countplot(y="deck", hue="class", data=titanic, palette="Greens_d");
Run Code Online (Sandbox Code Playgroud)
是否有任何简单(或甚至相对简单)的方法将此情节限制为仅3个甲板(组)而不是显示所有7个或者这是用sns.bargraph或者只是简单的matplotlib 更好的完成的东西?
matplotlib在我最近发现之前,我曾经使用过我的所有情节seaborn.我发现特别有趣的是它允许你拆分小提琴以比较给定的hue变量.
好吧,我的主要问题是我不知道为了改变小提琴颜色,轴名称或将图例放在我想要的地方我需要修改什么.
以下是我遵循的示例seaborn:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="ticks", palette="colorblind")
g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
g = g.map(sns.violinplot, "sex", "total_bill", "smoker", inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True).add_legend(title="smoker")
g.savefig(os.path.join(options.output_dir, "figures", "violinplots.png"))
Run Code Online (Sandbox Code Playgroud)
这是输出数字violinplots.png:
虽然我宁愿喜欢这样的东西:
总结一下:
white和blue颜色namesleftmost y axis只写legend with the blue category only先感谢您.欢迎任何帮助.
如果有人感兴趣,这是我最终通过MrPedru22解决这个数字的方式:
import seaborn as sns
tips = …Run Code Online (Sandbox Code Playgroud) 在pandas和中seaborn,可以使用with关键字临时更改显示/绘图选项,该关键字仅将指定的设置应用于缩进代码,同时保持全局设置不变:
print(pd.get_option("display.max_rows"))
with pd.option_context("display.max_rows",10):
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_rows"))
Run Code Online (Sandbox Code Playgroud)
日期:
60
10
60
Run Code Online (Sandbox Code Playgroud)
当我同样尝试with mpl.rcdefaults():或者with mpl.rc('lines', linewidth=2, color='r'):,我收到AttributeError: __exit__.
有没有办法临时更改matplotlib中的rcParams,以便它们只适用于选定的代码子集,还是我必须手动来回切换?
我使用这里的数据来构建使用seaborn和pandas的热图.
输入csv文件位于:https://www.dropbox.com/s/5jc1vr6u8j7058v/LUH2_trans_matrix.csv? dl = 0
码:
import pandas
import seaborn.apionly as sns
# Read in csv file
df_trans = pandas.read_csv('LUH2_trans_matrix.csv')
sns.set(font_scale=0.8)
cmap = sns.cubehelix_palette(start=2.8, rot=.1, light=0.9, as_cmap=True)
cmap.set_under('gray') # 0 values in activity matrix are shown in gray (inactive transitions)
df_trans = df_trans.set_index(['Unnamed: 0'])
ax = sns.heatmap(df_trans, cmap=cmap, linewidths=.5, linecolor='lightgray')
# X - Y axis labels
ax.set_ylabel('FROM')
ax.set_xlabel('TO')
# Rotate tick labels
locs, labels = plt.xticks()
plt.setp(labels, rotation=0)
locs, labels = plt.yticks()
plt.setp(labels, rotation=0)
# revert matplotlib …Run Code Online (Sandbox Code Playgroud) 假设我有列的DataFrame ['X_Axis','col_2','col_3',...,'col_n',]
我需要在X轴上绘制第一列并在Y轴上绘制.仅供参考:所有值均已根据X轴进行分组,X轴值范围为,0-25并且所有其他列值已标准化为刻度0 - 1.我希望它在相同的图形图上,而不是子图.
首选:FactorPlot,法线图.