这是第二款关于开源图形库的介绍。
现在, 我们这一节还是要接着去继续研究一下, 库里面那些其他的几种类型的图, 它们到底是用一种什么样的方式给构建起来的。
这节当中所主要涉及到的内容, 是对于一些柱状图的基本使用方法的展示。
1.柱状图
在开始绘制图像这个步骤之前, 我们首要的任务是先把准备好的那些数据给导入到程序里面去, 至于具体用什么样的数据呢, 这里选择用的是官方那边直接提供给我们的一个示例情况, 这个示例是关于咱们国家在每一年当中的生产总值还有人口数量这两个方面数据的。
# 导入数据import plotly.express as px
data = px.data.gapminder() # 导入自带的数据
data_canada = data[data['country'] == 'China'] # 筛选国家的数据
data_canada.head()
最终能够获取到下述的相关数据信息。
而后我们着手进行图形的绘制工作, 针对柱状图这一种图表类型来说, 其操作的关键点在于明确界定横轴与纵轴所要代表的含义, 具体来说, 需要设定纵坐标指向人口数量数据内容, 同时要设定横坐标对应年份时间序列相关的数据项:
# 导入数据fig = px.bar(data_canada, x='year', y='pop')
fig.show()
在这里, 我们可以看到人口数量呈现出逐年递增的趋势, 这种展示方式显得非常直观。这也是柱状图所具备的一个明显优势。尤其是在面对涉及时间序列数据的情况时, 使用柱状图能够更加有效地帮助我们分析和把握数据变化的具体状况。
我们有时候为了标注一些特殊的数据, 更清晰的突出重点, 可以对柱状图标色, 下面我们会单独对人均寿命, 人均国内总值进行显示, 主结构还是年份与人口数。
import plotly.express as pxdata = px.data.gapminder() # 导入自带的数据
data_canada = data[data['country'] == 'China'] # 筛选数据
fig = px.bar(data_canada,
x='year',
y='pop',
hover_data=['人均寿命', '人均国内生产总值'], # 鼠标点击时的浮动数据
color='lifeExp', # 用预期寿命涂色
labels={'pop':'人口数'}, # 修改变量名
height=400 # 修改图片尺寸
)
fig.update_layout(title = '中国人口') # 加入标题
fig.show()
运行程序之后, 屏幕上就会出现下面这个柱状图的显示画面。
咱们接下来去瞧一瞧柱状图, 它还有另一种叫做组合的表现形式, 这其中包括了分组柱状图以及堆积柱状图这两类。
分组柱状图:
import plotly.graph_objects as goanimals=['狮子', '老虎', '猴子']
fig = go.Figure(data=[
go.Bar(name='重庆动物园', x=animals, y=[20, 14, 23]), # name是区分不同组的最主要参数
go.Bar(name='北京动物园', x=animals, y=[12, 18, 29])
])
# Change the bar mode
fig.update_layout(barmode='group') # 设置分组方式,这里显示为并列
fig.show()
请把下面的这张图示展示出来。
在此处添加图片以展示相关描述。
堆积柱状图:
import plotly.graph_objects as goanimals=['狮子', '老虎', '猴子']
fig = go.Figure(data=[
go.Bar(name='重庆动物园', x=animals, y=[20, 14, 23]),
go.Bar(name='北京动物园', x=animals, y=[12, 18, 29])
])
# Change the bar mode
fig.update_layout(barmode='stack') # 设置分组方式为堆积
fig.show()
得到:
2.柱状图的高级用法
为了那个柱状图, 我们来添加对应的标注信息。
import plotly.graph_objects as gox = ['Product A', 'Product B', 'Product C']
y = [20, 14, 23]
fig = go.Figure(data=[go.Bar(
x=x, y=y,
text=y,
textposition='auto', # 标注位置自动调整
)])
fig.show()
关于 text这个参数的数值大小方面, 咱们能够通过调用下述所给出的方法来进行相应的调整工作。
其中, 那个东西可以用来对最小尺寸实施调整, 而另一个功能则是用来针对那些不符合规范准则的数字内容进行显现或者隐蔽操作的设定工作。
我在这一处进行了筛选操作, 针对的是来自欧洲各个国家的人口统计数据。
import plotly.express as pxdf = px.data.gapminder().query("continent == 'Europe' and year == 2007 and pop > 2.e6")
fig = px.bar(df,
y='pop',
x='country',
text='pop')
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=2, uniformtext_mode='hide')
fig.show()
这里用了一个fig ()方法, 该方法可用于调整柱状图和文字的显示格式以及显示的位置。
我们还能把坐标轴旋转, 具体做法比如使用 fig.(=-45) 这个参数, 让坐标轴旋转四百五十度。
除此之外, 我们还可以通过实际操作来进行自定义颜色的设置, 另外还可以调整宽度的数值。
import plotly.graph_objects as gocolors = ['lightslategray',] * 5
colors[1] = 'crimson'
fig = go.Figure(data=[go.Bar(
x=['Feature A', 'Feature B', 'Feature C',
'Feature D', 'Feature E'],
y=[20, 14, 23, 25, 22],
marker_color=colors # 颜色可以使单个颜色(标量),或者和数据维度一致
)])
fig.update_layout(title_text='Least Used Feature')
fig = go.Figure(data=[go.Bar(
x=[1, 2, 3, 5.5, 10],
y=[10, 8, 6, 4, 2],
width=[0.8, 0.8, 0.8, 3.5, 4] # 自定义宽度
)])
fig.show()
以及还有我们自定义柱的展示顺序:
import plotly.graph_objects as gox=['b', 'a', 'c', 'd']
fig = go.Figure(go.Bar(x=x, y=[2,5,1,9], name='Montreal'))
fig.add_trace(go.Bar(x=x, y=[1, 4, 9, 16], name='Ottawa'))
fig.add_trace(go.Bar(x=x, y=[6, 8, 4.5, 8], name='Toronto'))
fig.update_layout(barmode='stack', xaxis={'categoryorder':'category ascending'}) # 字母表升序
fig.show()
得到结果:
3:总结
通过观察上述示例, 我们可以发现柱状图具备一个显著的优势, 这种优势体现在其能够十分清晰地展示出存在不同类别或者不同组别之间的差异情况, 这使得我们能够方便地对数据的大小以及发展趋势进行比较操作, 同时它也呈现出一种易于被理解与便于进行解释的特点。
它的问题在于, 倘若类别或者是分组变得特别庞大, 那么这幅图表就会出现非常拥挤的状况, 从而导致使用者在阅读起来变得非常困难,同时在进行比较的时候也会感到难以操作。
这一点, 柱状图和折线图它们两个看起来就很类似。