我正在寻找一种可靠的方法来自动为我的情节选择线条样式.现在我有8行用于绘图,我希望自动选择可以区分的线型是可行的.
截至目前,我基本上有两种方式.设置标记或定义样式.两个人似乎都对seaborn有些问题.首先是使用循环仪:
plt.rc('axes', prop_cycle=cycler('linestyle', ['-', '--', ':', '-.']))
Run Code Online (Sandbox Code Playgroud)
如果我使用它,它要么覆盖seaborn设置,要么被seaborn覆盖,这取决于我先设置的那个.我在其中一个示例中找到的另一种方法是设置行的标记:
def makeStyles():
markers = []
for m in Line2D.markers:
try:
if len(m) == 1 and m != ' ':
markers.append(m)
except TypeError:
pass
styles = markers + [
r'$\lambda$',
r'$\bowtie$',
r'$\circlearrowleft$',
r'$\clubsuit$',
r'$\checkmark$']
return styles
Run Code Online (Sandbox Code Playgroud)
这里的问题是,相当一些标记看起来是相同的,这只是一条没有标记的线.
有没有其他方法可靠,适用于seaborn?
我正在尝试用seaborn绘制热图并将其导出到pgf,以便在Latex中轻松导入.这或多或少都有效,唯一困扰我的是颜色条被导出为额外的png.
因此,如果我将导出运行到pgf,我会得到以下结果:
这绝对是不合需要的,因为png不能很好地缩放.一些MWE:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame.from_csv("test.csv", sep=',')
sns.set('paper', 'white', rc={'font.size': 10, 'axes.labelsize': 10, 'legend.fontsize': 8, 'axes.titlesize': 10,
'xtick.labelsize': 8,
'ytick.labelsize': 8, "pgf.rcfonts": False})
plt.rc('font', **{'family': 'serif', 'serif': ['Times']})
plt.rc('text', usetex=True)
fig = plt.figure()
ax = sns.heatmap(df, linewidths=.5)
fig.savefig('test.pdf')
fig.savefig('test.pgf')
Run Code Online (Sandbox Code Playgroud)
和test.csv的内容:
0,1,2,3,4
1,1,1,1,1
2,2,2,2,2
3,3,3,3,3
Run Code Online (Sandbox Code Playgroud)
有没有人有解决方案将颜色条包含在pgf输出中?