spyder中绘图无法显示负号_matlibplot+seaborn绘图风格交叉使用
matlibplot+seaborn绘图风格交叉使用
遇到问题:想要图一的图案,但是想要seaborn中默认的风格绘制
一开始的想法是seaborn既然升级版matlibplot,应该支持直接修改plt.plot==>sns.barplot ,但实际上是不支持的。
# coding:utf-8
from pandas import Series,DataFrame
from numpy.random import randn
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
import seaborn as sns
sns.set_style("whitegrid")
plt.rc("font",family="SimHei",size="16") #用于解决中文显示不了的问题
sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei') # 解决Seaborn中文显示问题#创建一个画板
fig=plt.figure(figsize=(8,6))#为画板划分多个Axes
ax = plt.subplot(111) #假如设置为221,则表示创建两行两列也就是4个子画板,ax为第一个子画板#数据准备
stock_type_list=[[396, 384], [351, 429], [0, 780], [368, 412], [0, 780], [167, 613], [390, 390], [4, 776], [332, 448], [399, 381], [25, 755], [265, 515]]#y轴数据
ya = np.array([i[0] for i in stock_type_list[::3]]) # 股价差跌
yb = np.array([i[1] for i in stock_type_list[::3]])#柱状图的宽度
width = 0.3
#x轴数据
x_bar = np.arange(4)#绘制柱状图
rects1 = sns.barplot(x_bar-width/2,ya,label='跌')
rects2 = sns.barplot(x_bar+width/2,yb,label='涨',)#为柱状图添加高度值(不能使用因为sns.plot中不是iteration)
# for rect in rects1:
# x1 = rect.get_x()
# height1 = rect.get_height()
# ax.text(x1+0.2,1.01*height1,str(height1))
# # print(x,height)
# for rect in rects2:
# x2 = rect.get_x()
# height2 = rect.get_height()
# ax.text(x2+0.2,1.01*height2,str(height2))#设置x轴的刻度
ax.set_xticks(x_bar)
ax.set_xticklabels(['后1天股价差','后5天股价差','后20天股价差','后60天股价差'])#设置y轴的刻标注
ax.set_ylabel("回购数量(单位:次数)")
ax.set_xlabel("回购后影响天数")#是否显示网格
# ax.grid(True)#拉伸y轴
# ax.set_ylim(0,28)#设置标题
ax.set_title("回购后的股价差涨跌幅统计")plt.legend(loc='lower right')#显示图表
plt.show()fig.savefig('回购后股价差.png')
出来结果图二是柱状图混乱,没有显示两个柱状图。
第二次:是创建一个dataframe,和使用seaborn绘制折线想法一样,直接扔一堆data到sns.lineplot(data=DataFrame)即可
# 使用seaborn绘制多柱状图
'''
使用seaborn绘制双柱状图不可行的原因:sns.barplot的api接口太高级,sns的思想是,你给我数据,我来帮你区分怎么样切割数据
例如:seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean at 0x10a2a03b0>, ci=95, n_boot=1000, units=None, seed=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)
直接给定dataframe中的x,y,hue来切割,data=DataFrame,直接绘制会无法识别,而发生重叠但是绘制折线图是可以:sns.lineplot折线可以的原因是折线本身可以发生重叠。
'''price_dict={ # 'index':['后1天股价差','后5天股价差','后20天股价差','后60天股价差'],'股价跌':[396,368,390,399],'股价涨':[384,412,390,381],}price_diff_df=pd.DataFrame(data=price_dict ,index=['后1天股价差','后5天股价差','后20天股价差','后60天股价差'],)price_diff_dfprice_sea_da=[price_diff_df["股价跌"],price_diff_df["股价涨"]]fig=plt.figure(figsize=(8,4))
ax = plt.subplot(111)ax=sns.barplot(data=price_sea_da)ax.set_ylabel("回购后n天平均股价变化") # 比如回购发生后几天内的平均股价
ax.set_xlabel("占总股本比例(单位:%)增长排序")#设置x轴的刻度
ax.set_title("回购后n天平均股价变化")
# ax.set_xticklabels(price_sort_df['占总股本比例'].tolist())plt.show()
# fig.savefig('回购后n天占总股本比例--平均股价变化.png')
第三次:可以在绘制matlibplot的基础上,修改到seaborn的风格
# coding:utf-8
from pandas import Series,DataFrame
from numpy.random import randn
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
import seaborn as sns
# sns.set_style("whitegrid")
plt.rc("font",family="SimHei",size="16") #用于解决中文显示不了的问题
# sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei') # 解决Seaborn中文显示问题
% matplotlib inline#再论柱状图
#创建一个画板
print("可使用的风格",plt.style.available)
fig=plt.figure(figsize=(8,6))
plt.style.use('tableau-colorblind10')
# 这种风格可以使用中文字体,使用seaborn默认交叉使用matlibplot会不支持中文,算一个bug?#为画板划分多个Axes
ax = plt.subplot(111) #假如设置为221,则表示创建两行两列也就是4个子画板,ax为第一个子画板#数据准备
stock_type_list=[[396, 384], [351, 429], [0, 780], [368, 412], [0, 780], [167, 613], [390, 390], [4, 776], [332, 448], [399, 381], [25, 755], [265, 515]]#y轴数据
ya = np.array([i[0] for i in stock_type_list[1::3]]) # 股价差跌
yb = np.array([i[1] for i in stock_type_list[1::3]])#柱状图的宽度
width = 0.3
#x轴数据
x_bar = np.arange(4)#绘制柱状图
rects1 = ax.bar(x_bar-width/2,ya,width=width,label='跌',color='darkseagreen')
rects2 = ax.bar(x_bar+width/2,yb,width=width,label='涨',color='olive')#为柱状图添加高度值
for rect in rects1:x1 = rect.get_x()height1 = rect.get_height()ax.text(x1+0.1,1.01*height1,str(height1))
# print(x,height)
for rect in rects2:x2 = rect.get_x()height2 = rect.get_height()ax.text(x2+0.1,1.01*height2,str(height2))#设置x轴的刻度
ax.set_xticks(x_bar)
ax.set_xticklabels([u'后1天平均股价','后5天平均股价','后20天平均股价','后60天平均股价'])#设置y轴的刻标注
ax.set_ylabel("回购数量(单位:次数)")
ax.set_xlabel("回购后影响天数")
#是否显示网格
# ax.grid(True)
#拉伸y轴
# ax.set_ylim(0,28)
#设置标题
ax.set_title("回购后的平均股价涨跌幅统计")
plt.legend(loc='lower right')
#显示图表
plt.show()
# fig.savefig('回购后平均股价.png')
spyder中绘图无法显示负号_matlibplot+seaborn绘图风格交叉使用相关推荐
- spyder中绘图无法显示负号_Python绘图--时序图
众所周知,使用python绘图特别简单,容易上手.本篇通过一个简单的demo展示:如何使用matplotlib包 绘制时间序列图. 一.读取数据及处理 通过pandas读取CSV文件,keep_def ...
- spyder中绘图无法显示负号_[转载]Matlab常用函数
计算样本的百份位数 Matlab的常用内部数学函数 指数函数 exp(x) 以e为底数 对数函数 log(x) 自然对数,即以e为底数的对数 log10(x) 常用对数,即以10为底数的对数 log2 ...
- seaborn绘图基础介绍
目录 1.seaborn的优点 2.seaborn的官网 3.seaborn的作者介绍 4.seaborn的缩写为什么是sns,而不是sbn? 5.seaborn与matplotl ...
- Seaborn使用violinplot函数可视化多分组小提琴图(violin plot)、每个小提琴图内部包含两个分组、使用inner函数设置在小提琴图中使用虚线显示分位数位置
Seaborn使用violinplot函数可视化多分组小提琴图(violin plot).每个小提琴图内部包含两个分组.使用inner函数设置在小提琴图中使用虚线显示分位数位置(inner = 'qu ...
- python画图为什么运行不出来_PyCharm中Matplotlib绘图不能显示UI效果的问题解决
问题描述 我们利用了Matplotlib的类Cursor,向图形添加一组纵横交叉的直线,从而实现图形界面中任何位置的数值定位的可视化效果. 但使用PyCharm,绘图结果在右侧的部分: 这固然是需要绘 ...
- python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph
用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...
- 让图形变得精致:seaborn绘图基础
本文来自读者投稿,作者:黄同学 学习Python中用seaborn绘图的技巧 1.seaborn的优点 它简化了复杂数据集的表示: 可以轻松构建复杂的可视化,简洁的控制matplotlib图形样式与几 ...
- seaborn绘图入门1(lineplot+barplot+heatmap+scatterplot)
文章目录 1. lineplot 线图 2. barplot .heatmap 条形图.热图 2.1 barplot,条形图 2.2 heatmap,热图 3. scatterplot.regplot ...
- 数据可视化——利用pandas和seaborn绘图基础
文章目录 一.折线图 二.柱状图 三.直方图和密度图 四.散点图或点图 五.分面网格 其他绘图工具: 图像可视化--matplotlib绘图入门基础 一.折线图 1.Series和DataFrame都 ...
最新文章
- 开发ing经验关于游戏中寻路
- html5 居于页面中心,css笔记:如何让一个div居于页面正中间
- 第19讲:Pyppeteer 爬取实战
- Angular rxjs operators 笔记
- 动态创建标记+css_dom+js动态效果
- java小应用_java小应用
- qtreewidgetitem 文字内存太长换行_table文字溢出显示省略号问题
- python求解非线性多元方程_求解python中的colebrook(非线性)方程
- 用Openswan组建Linux IPSec ---第一部分
- IDF 实验室 初探乾坤
- 题解 P2163 SHOI2007 园丁的烦恼
- OneNote使用教程
- java voip 的sip服务器搭建_SIP协议开源SIP服务器搭建和客户端安装
- Rhino7安装教程
- 笔记本电脑插网线显示未识别的网络_笔记本插入网线,显示未识别网络
- Linux的命令回收站在哪,Trash-Cli:Linux 上的命令行回收站工具
- cannon的英文名_卡农的作者是谁啊 此曲的赏析 英文名cannon不是大炮吗
- 商用车市场「跌跌不休」,主动安全「让位」智能驾驶?
- Xinetd服务的安装与配置详解
- linux常用命令:iconv 命令(用于文件的编码转换),还可以用UE另存
热门文章
- POJ--3268--Silver Cow Party【SPFA+邻接表】
- sem_我知道的关键词1
- emacs 跳转到指定行
- 使用Installshield制作asp,asp.net应用的安装程序
- FFmpeg音频编码 ---- pcm转aac(使用新版ffmpeg API,亲测可用)
- MATLAB读取excel文件中的数据
- VC实现HTTP协议的GET和POST方法
- 张衡的地震仪不起作用的原因
- Android开源框架——内存泄漏检测工具 LeakCanary
- php post请求后端拿不到值_[精选] uniapp实现多端开发,与PHP是如何结合的